【问题标题】:Flask request: determine exact path, including if there is a question markFlask 请求:确定确切路径,包括是否有问号
【发布时间】:2019-12-17 19:37:38
【问题描述】:

有没有办法确定向服务器请求的路径是什么,包括它是否包含问号?应用程序

from flask import Flask, Response, request

def root():
    return Response(
        f'full_path:{request.full_path} '
        f'path:{request.path} '
        f'query_string:{request.query_string} '
        f'url:{request.url}'
    )

app = Flask('app')
app.add_url_rule('/', view_func=root)

app.run(host='0.0.0.0', port=8081, debug=False)

总是结果

full_path:/? path:/ query_string:b'' url:http://localhost:8081/

如果有要求

http://localhost:8081/?

http://localhost:8081/

这在很多情况下似乎并不重要,但我正在创建一个具有多个重定向的身份验证流程,其中用户最终会到达与他们开始时完全相同的 URL。目前,我看不到确保 Flask 发生这种情况的方法。

【问题讨论】:

    标签: python http flask oauth query-string


    【解决方案1】:

    除了您已经提到的字段之外,“环境”字段中的值可能对您的情况有用:

    def root():
        return Response(
            f'raw_uri:{request.environ["RAW_URI"]} '
            f'request_uri:{request.environ["REQUEST_URI"]}'
        )
    

    输入:

    http://localhost:8081/?
    

    输出:

    raw_uri:/?
    request_uri:/?
    

    输入:

    http://localhost:8081/
    

    输出:

    raw_uri:/
    request_uri:/
    

    【讨论】:

    • 注意: REQUEST_URI 在使用 Gunicorn 时由于某种原因不可用(你会得到一个 KeyError)。 RAW_URI 似乎可用于 Flask 开发服务器和 Gunicorn。
    猜你喜欢
    • 1970-01-01
    • 2017-10-07
    • 2015-05-16
    • 1970-01-01
    • 2019-07-17
    • 1970-01-01
    • 1970-01-01
    • 2014-11-10
    • 2012-02-16
    相关资源
    最近更新 更多