【发布时间】:2020-04-23 02:20:29
【问题描述】:
我有这个代码:
# -*- coding: utf-8 -*-
from flask import Flask, render_template,request,json,make_response,Response,request,redirect,url_for
from flask_cors import CORS
app = Flask(__name__)
CORS(app,resources=r'/*')
@app.route('/operation',methods=['GET'])
def payload():
return render_template('page.html')
@app.route('/',methods=['HEAD'])
def start():
return redirect('http://127.0.0.1:8001/operation',code=303)
if __name__ == '__main__':
app.run(host='0.0.0.0', port="8001",debug = True)
当我收到 HEAD 请求时,我想将请求重定向到 GET 请求并返回一个 html 页面。问题是当 GET 在 methods 参数中单独设置时,Flask 会自动添加方法 HEAD(来自文档):
如果方法列表中存在 GET 而 HEAD 不存在,则会自动添加 HEAD修改 Flask 的源代码可以避免这种行为,但是当客户端 A 向我的服务器发出 HEAD 请求时,它会将那个请求重定向到 /operation 但同时维护 HEAD 方法重定向的 303 或 302 状态码。可能我不理解这些代码的逻辑(我也阅读了相关的 RFC),但是方法不应该从 HEAD 更改为 GET 吗?
非常感谢您的回答!
【问题讨论】:
标签: python-3.x flask