gpt4 book ai didi

python - Flask 可以在响应中发送重复的 header 吗?

转载 作者:行者123 更新时间:2023-12-02 02:40:41 25 4
gpt4 key购买 nike

我希望我的 Flask 应用程序设置具有相同键和不同值的多个 header ,如下所示:

Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers

我已经知道这相当于一个值是逗号分隔列表的单个 header (当然,仅适用于支持列表值的 header ),但我宁愿按照上面的方式进行操作。但 header 存储在字典中,因此我不能只添加重复的键。

我还知道this question and answer ,它表示 requests 模块无法使用相同的 key 发送多个 header 。但这个问题是关于请求的,而 Flask 有时还有额外的好处;而且这个问题已经七年多了,事情就发生了。

这个答案是最新的吗?它也适用于 flask 吗?

最佳答案

请求 header

您可以有重复的 header 键,但是 Flask 将它们转换为文本,值用逗号分隔,

最简单的例子是:

from flask import Flask, request

app = Flask(__name__)

@app.route('/')
def index():
print(request.headers)
return "Hello"

具有以下curl : curl http://127.0.0.1:5000 -H 'X-HEADER: 1' -H 'X-HEADER: 2'

Flask 会打印 X-Header: 1,2对于 X-Header在标题中此外,您还可以使用 request.headers.getlist('X-Header') 获取值列表。 ,但它仍然将这些值粘在一起并返回一个仅包含一个元素的列表。 ['1,2']

request.headerswerkzeug.datastructures.EnvironHeaders 的一个实例

当然,您可以修改它以使用您自己的 header 类。您可以继承flask.Request类并创建您自己的 request定制实例Headers

您可以阅读有关 EnvironHeaders 的更多信息这里:https://werkzeug.palletsprojects.com/en/1.0.x/datastructures/#werkzeug.datastructures.EnvironHeaders

响应 header

关于响应 header :

所有 flask 响应均来自flask.Response类。

您可以从您的 View 返回您的响应,例如:

from flask import flask, Response

app = Flask(__name__)

@app.route('/')
def index():
return Response('Hello', headers={'X-Headers': [1, 2]})

您可以使用以下命令进行测试 curl : curl http://127.0.0.1:5000 -vvv我添加了-vvv增加详细程度并显示标题

以下内容将显示在响应 header 中:

< X-Headers: 1
< X-Headers: 2

此外,如果您不想使用 Response类(class),您可以从 View 返回多个值

@app.route('/')
def index():
return '<h1>Hello!</h1>', 200, {'X-Headers': [1, 2]}

第一个值是响应的正文,第二个值是状态代码,最后一个值是响应的 header 。

关于python - Flask 可以在响应中发送重复的 header 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63691566/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com