在烧瓶中重定向时发出POST请求

ln2*_*nal 43 python redirect flask

我正在使用烧瓶.我处于这样一种情况,我需要将一个post请求重定向到另一个url,保留请求方法,即"POST"方法.当我将"GET"请求重定向到另一个接受"GET"请求方法的网址时没问题.这是我正在尝试上面的示例代码..

@app.route('/start',methods=['POST'])
def start():
    flask.redirect(flask.url_for('operation'))

@app.route('/operation',methods=['POST'])
def operation():
    return "My Response"
Run Code Online (Sandbox Code Playgroud)

我想对"/ start"url发出"POST"请求,内部也向"/ operation"url发出"POST"请求.如果我修改代码,就像这样,

@app.route('/operation',methods=['GET'])
def operation():
    return "My Response"
Run Code Online (Sandbox Code Playgroud)

代码适用于"GET"请求.但我也希望能够发出POST请求.

mde*_*ous 90

默认情况下,redirect提供的功能会向Flask客户端发送302状态代码,如维基百科上所述:

许多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)
Run Code Online (Sandbox Code Playgroud)

  • 感谢您的确切建议!(鞠躬)我仍然恳求一个可以深入学习烧瓶的来源的建议。我想学习这种“代码”相关的东西。我认为这些是核心。再次感谢:) (2认同)