Python-使用Flask获取URL片段标识符

时间:2018-12-01 00:03:16

标签: python url flask query-parameters url-fragment

我的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)

1 个答案:

答案 0 :(得分:2)

URL的哈希值(#之后的所有信息)从不会发送到服务器,浏览器会删除它,从而使URL的这一部分完全在客户端。根据{{​​3}}:

  

片段标识符的功能与URI的其余部分不同:完全是客户端的处理,没有来自Web服务器的参与,[...]。当代理(例如Web浏览器)从Web服务器请求Web资源时,代理会将URI发送到服务器,但不发送片段。

这意味着无论您使用哪种框架,都无法在后端检索它,因为它们中的任何一个都不会接收到该数据。

您需要改用查询参数,因此您的网址应如下所示:

https://foo.com/bar?data1=ABC&data2=XYZ

在这种情况下,您将可以使用Wikipedia访问它们:

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)