如何在python中的#之后从URL获取param

问题描述 投票:2回答:2

如何在#之后从URL获取参数?

例:

http://localhost/addAccount/#code=qwerty

我尝试使用url = request.pathurl.spit('/'),但它不起作用因为request.path不读取#in url后的字符串。

python django
2个回答
1
投票

在URL中,在#之后传播的内容称为哈希。在到达服务器(服务器端)的HTTP请求中,此数据不会传送到服务器。因此,在服务器端,无法检索它(Web浏览器不会在HTTP请求中发送此数据)。

但是,在客户端,它是可能的。在Javascript中你可以这样做:

窗口。地点。哈希


0
投票

不要尝试手动解析网址 - 使用stdlib urllib.parse.urlparse 函数(python2上的urlparse.urlparse):

from urllib.parse import urlparse  # from urlparse import urlparse on py2
scheme = urlparse('http://localhost/addAccount/#code=qwerty')
print(scheme.fragment)

打印出来:

code=qwerty

不幸的是,你无法从服务器端获取url的fragement(#之后的数据)。 AFAIK所有浏览器都不会将片段发送到服务器(片段只能用于客户端代码(例如javascript))。

引用Wikipedia

当代理(例如Web浏览器)从Web服务器请求Web资源时,代理会将URI发送到服务器,但不会发送该片段。相反,代理等待服务器发送资源,然后代理根据文档类型和片段值处理资源。[2]

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.