我的Flask程序在后面收到以下请求以及一些数据#:
#
https://som.thing.com/callback#data1=XXX&data2=YYY&data3=...
而且我需要读取data1参数,但这似乎不起作用:
data1
@app.route("/callback") def get_data(): data = request.args.get("data1") print(data)
URL的哈希值(之后的所有内容#)永远不会发送到服务器,浏览器会将其删除,从而使URL的这一部分完全在客户端。根据维基百科:
片段标识符的功能不同于URI的其余部分:它的处理 完全 是在 客户端进行的,没有Web服务器的参与 。当代理(例如Web浏览器)从Web服务器请求Web资源时,代理将URI发送到服务器, 但不发送片段。
这意味着无论您使用哪种框架,都无法在后端检索它,因为它们都不会收到该数据。
您需要改用查询参数,因此您的网址应如下所示:
https://foo.com/bar?data1=ABC&data2=XYZ
在这种情况下,您将可以使用来访问它们request.args:
request.args
from flask import request @app.route('/bar') def bar(): page = request.args.get('data1', default = '', type = str) filter = request.args.get('data2', default = 0, type = int)