代码之家  ›  专栏  ›  技术社区  ›  Michal Charemza

烧瓶请求:确定确切路径,包括是否有问号

  •  0
  • Michal Charemza  · 技术社区  · 7 年前

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

    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与他们开始时的URL完全相同。目前,我找不到一种方法来确保这种情况发生在烧瓶上。

    0 回复  |  直到 7 年前
        1
  •  1
  •   Sagar Gupta    7 年前

    除了您已经提到的字段外,“environ”字段中的值在您的情况下可能会很有用:

    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:/
    
    推荐文章