在 Flask 中重定向时发出 POST 请求
- 2025-03-20 08:47:00
- admin 原创
- 38
问题描述:
我正在使用 flask。我遇到的情况是,我需要将 post 请求重定向到另一个 url,同时保留请求方法,即“POST”方法。当我将“GET”请求重定向到另一个接受“GET”请求方法的 url 时,一切正常。下面是我尝试上述操作的示例代码。
@app.route('/start',methods=['POST'])
def start():
flask.redirect(flask.url_for('operation'))
@app.route('/operation',methods=['POST'])
def operation():
return "My Response"
我想向“/start”url 发出“POST”请求,而该请求在内部也会向“/operation”url 发出“POST”请求。如果我像这样修改代码,
@app.route('/operation',methods=['GET'])
def operation():
return "My Response"
代码对于“GET”请求运行良好。但我也希望能够发出 POST 请求。
解决方案 1:
redirect
提供的函数默认Flask
向客户端发送 302 状态代码,正如Wikipedia中提到的:
许多 Web 浏览器以违反此标准的方式实现此代码,将新请求的请求类型更改为 GET,而不管原始请求中使用的类型(例如 POST)。[1] 出于这个原因,HTTP/1.1(RFC 2616)添加了新的状态代码 303 和 307 来消除这两种行为之间的歧义,其中 303 要求将请求类型更改为 GET,而 307 保留最初发送的请求类型。
因此,发送 307 状态代码(而不是 302)应该会告诉浏览器保留所使用的 HTTP 方法,从而实现您期望的行为。redirect
然后,您对的调用将如下所示:
flask.redirect(flask.url_for('operation'), code=307)
相关推荐
热门文章
项目管理软件有哪些?
热门标签
曾咪二维码
扫码咨询,免费领取项目管理大礼包!
云禅道AD