Sae*_*eid 27 python http-headers flask
我想将我的所有http标头响应设置为这样的:
response.headers["X-Frame-Options"] = "SAMEORIGIN"
Run Code Online (Sandbox Code Playgroud)
我检查了这个问题,但它只更改了一个特定控制器的标题.我想在"before_request"函数中更改所有标题,类似于以下逻辑.我怎样才能做到这一点?
@app.before_request
def before_request():
# response.headers["X-Frame-Options"] = "SAMEORIGIN"
Run Code Online (Sandbox Code Playgroud)
Mar*_*ers 51
在@app.after_request()钩子中设置标题,此时您有一个响应对象来设置标题:
@app.after_request
def apply_caching(response):
response.headers["X-Frame-Options"] = "SAMEORIGIN"
return response
Run Code Online (Sandbox Code Playgroud)
的flask.request背景下仍然可用这个钩子运行时,所以你仍然可以改变基于此时的请求的响应.
这@app.after_request() hook对于我的用例来说是不够的。
我的用例如下:我有一个谷歌云功能,我想为所有响应设置 CORS 标头。可能有多个响应,因为我必须验证输入并在出现问题时返回,我必须处理数据并可能在出现故障时提前返回等。所以我创建了一个辅助函数,如下所示:
# Helper function to return a response with status code and CORS headers
def prepare_response(res_object, status_code):
response = flask.jsonify(res_object)
response.headers.set('Access-Control-Allow-Origin', '*')
response.headers.set('Access-Control-Allow-Methods', 'GET, POST')
return response, status_code
Run Code Online (Sandbox Code Playgroud)
因此,当我想返回一个响应(总是带有 CORS 标头)时,我现在可以调用这个函数并且我不会重复启用 CORS 所需的 response.headers 设置。