python - Flask 请求:确定确切路径,包括是否有问号
问题描述
有没有办法确定向服务器请求的路径是什么,包括它是否包含问号?应用程序
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 发生这种情况的方法。
解决方案
除了您已经提到的字段之外,“环境”字段中的值可能对您的情况有用:
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:/
推荐阅读
- c# - NETSDK1073:无法识别 FrameworkReference 'Microsoft.AspNetCore.App'
- javascript - Django REST 框架:错误 [“类型不正确。预期的 pk 值,已收到 str。” ]
- javascript - 暂停网络上的动画
- excel - VBA - 想要自动将总和结果放在底部
- sails.js - Sails.js 上每个请求类型的替代数据存储
- c# - 在 Gridview 的每一行中添加不同的数字
- javascript - axios 无法通过 ID react 获取对象
- maven - 带有插件/扩展的定制构建的 Maven 最佳实践?
- java - 如何让Tomcat服从WAR的context.xml路径信息
- python - 未绑定的本地错误不会始终如一地发生