使用Flask,我怎样读取HTTP头部信息?我想要检查客户端发送的授权头部信息。
from flask import request
request.headers.get('your-header-name')
request.headers
的行为类似于字典,因此您可以像访问任何字典一样获取您的头信息:
request.headers
的行为类似于字典,因此您可以像访问任何字典一样获取您的头信息:
request.headers['your-header-name']
get
函数的第二个参数似乎是多余的,因为我相信None
是默认值。 - holdenweb如果有人试图获取传递的所有标头,则只需简单地使用:
dict(request.headers)
它会将所有的标题作为字典返回,你可以根据需要进行任何操作。在我的使用案例中,我必须将所有标题转发到另一个 API,因为 Python API 是代理。request.headers
实际上是一个 EnvironHeaders
对象,可以像字典一样访问。https://werkzeug.palletsprojects.com/en/1.0.x/datastructures/#werkzeug.datastructures.EnvironHeaders - jasonrhaasEnvironHeaders
不是dict
的子类,因此它在许多dict
成功的情况下失败(isinstance(flask.request.headers, dict) == False
)。例如,以下代码会产生错误:print(json.dumps(flask.request.headers, indent=4))
。修复方法是print(json.dumps(dict(flask.request.headers), indent=4))
。 - Tim Ludwinskirequest.headers
的类型将是 dict
,因为它可以像dict
一样访问/查询。你看到的评论是对那个评论的回应。 - iam.Carrot请注意,这些方法之间的区别在于如果标题不存在
request.headers.get('your-header-name')
会返回None
或无异常,因此您可以像使用它一样使用它
if request.headers.get('your-header-name'):
....
但是以下内容会引发错误
if request.headers['your-header-name'] # KeyError: 'your-header-name'
....
你可以通过处理来解决它
if 'your-header-name' in request.headers:
customHeader = request.headers['your-header-name']
....
https://127.0.0.1/upload?key1=value1&key2=value2
from flask import Flask, request
app = Flask(__name__)
@app.route('/upload')
def upload():
key_1 = request.args.get('key1')
key_2 = request.args.get('key2')
print(key_1)
#--> value1
print(key_2)
#--> value2
header_1 = request.headers.get('header1')
header_2 = request.headers.get('header2')
print(header_1)
#--> header_value1
print(header_2)
#--> header_value2
file_name = request.files['file'].filename
ref_id = request.form['referenceId']
print(ref_id)
#--> WWB9838yb3r47484
request.files
获取上传的文件,使用 request.form
获取文本。