Python - 使用 Flask 获取 URL 片段标识符
Python - Get URL fragment identifier with Flask
我的 Flask 程序在 #
之后收到以下请求和一些数据:
https://som.thing.com/callback#data1=XXX&data2=YYY&data3=...
我需要读取 data1
参数,但这似乎不起作用:
@app.route("/callback")
def get_data():
data = request.args.get("data1")
print(data)
URL 的哈希值(#
之后的所有内容)永远不会发送到服务器,浏览器会将其剥离,使 URL 的那部分完全保留在客户端-边。根据Wikipedia:
The fragment identifier functions differently to the rest of the URI: its processing is exclusively client-side with no participation from the web server, [...]. When an agent (such as a Web browser) requests a web resource from a Web server, the agent sends the URI to the server, but does not send the fragment.
这意味着无论您使用哪种框架,都无法在后端检索它,因为其中 none 将永远收到该数据。
您需要改用查询参数,因此您的 URL 应如下所示:
https://foo.com/bar?data1=ABC&data2=XYZ
在这种情况下,您将能够使用 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)
我的 Flask 程序在 #
之后收到以下请求和一些数据:
https://som.thing.com/callback#data1=XXX&data2=YYY&data3=...
我需要读取 data1
参数,但这似乎不起作用:
@app.route("/callback")
def get_data():
data = request.args.get("data1")
print(data)
URL 的哈希值(#
之后的所有内容)永远不会发送到服务器,浏览器会将其剥离,使 URL 的那部分完全保留在客户端-边。根据Wikipedia:
The fragment identifier functions differently to the rest of the URI: its processing is exclusively client-side with no participation from the web server, [...]. When an agent (such as a Web browser) requests a web resource from a Web server, the agent sends the URI to the server, but does not send the fragment.
这意味着无论您使用哪种框架,都无法在后端检索它,因为其中 none 将永远收到该数据。
您需要改用查询参数,因此您的 URL 应如下所示:
https://foo.com/bar?data1=ABC&data2=XYZ
在这种情况下,您将能够使用 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)