python:用 os.environ 得到完整的 url

python: getting the complete url with os.environ

我想使用 os.environ 获得完整的 URL。 我正在用 voila 渲染笔记本,我想使用 URL.

中的参数从仪表板打开 url

到目前为止我有:

URL_BASE = os.environ.get('SCRIPT_NAME')
PARAMETERS = os.environ.get("QUERY_STRING")
print(f'{URL_BASE=}')
print(f'{PARAMETERS=}')

假设这是 url:

https://flyingcar.org/john/voila/render/shared/users/j/john/learn_url.ipynb?redirects=2&name=john&dossier=SA123445#{whatever=no/f=5}

URL_BASE="flyingcar.org/john/voila/render/shared/users/j/john/learn_url.ipynb"
&
PARAMETERS="redirects=2&name=john&dossier=SA123445"

查看 os.environ 中的整个 var 集合,我没有看到任何包含整个 url(包括 # 之后的内容)的内容,以便也解析该部分与参数一样。

captured_values = parse_qs(PARAMETERS)
print('here parse_qs of query:',captured_values)
>>> here parse_qs of query: {'d': ['34'], 'f': ['56']}

一些想法?

我尝试打印所有 os.environ 变量:

for k,v in os.environ.items():
    print(k,v)

但它似乎没有包含超出 URL 中 # 符号的内容 有任何想法吗? 谢谢

相关: Get current URL in Python

URI 的片段 (#) 部分永远不会离开用户代理,因此 python 网络服务器无法获取它。参见:https://datatracker.ietf.org/doc/html/rfc3986#page-24

... instead, the fragment identifier is separated from the rest of the URI prior to a dereference, and thus the identifying information within the fragment itself is dereferenced solely by the user agent, regardless of the URI scheme.