如何在#之后从URL获取参数?
例:
http://localhost/addAccount/#code=qwerty
我尝试使用url = request.path
和url.spit('/')
,但它不起作用因为request.path
不读取#in url后的字符串。
在URL中,在#之后传播的内容称为哈希。在到达服务器(服务器端)的HTTP请求中,此数据不会传送到服务器。因此,在服务器端,无法检索它(Web浏览器不会在HTTP请求中发送此数据)。
但是,在客户端,它是可能的。在Javascript中你可以这样做:
窗口。地点。哈希
不要尝试手动解析网址 - 使用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]