如何在烧瓶中获取http标头?

时间:2015-04-01 09:16:56

标签: python http flask http-headers authorization

我是python的新手并使用Python Flask并生成REST API服务。

我想检查发送给客户端的授权标头。

但是我无法找到获取HTTP标头的方法。

感谢获得HTTP标头授权的任何帮助。

4 个答案:

答案 0 :(得分:197)

from flask import request
request.headers.get('your-header-name')

request.headers的行为类似于字典,因此您也可以像使用任何字典一样获取标题:

request.headers['your-header-name']

答案 1 :(得分:4)

请注意,如果标头不存在,则方法之间的区别是

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']
   ....

答案 2 :(得分:4)

如果有人试图获取所有已传递的标头,则只需使用:

dict(request.headers)

它为您提供了dict中的所有标头,您实际上可以从中执行任何想要的操作。在我的用例中,由于python API是代理,因此我不得不将所有标头转发到另一个API

答案 3 :(得分:3)

让我们看看如何在Flask中获取参数,标题和正文。 我要在邮递员的帮助下进行解释。

enter image description here

params键和值反映在API端点中。 例如端点中的key1和key2: https://127.0.0.1/upload密钥1 = value1&密钥2 = 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

参数设置之后,让我们看看如何获​​取标头

enter image description here

  header_1 = request.headers.get('header1')
  header_2 = request.headers.get('header2')
  print(header_1)
  #--> header_value1
  print(header_2)
  #--> header_value2

现在让我们看看如何获​​得 body

enter image description here

  file_name = request.files['file'].filename
  ref_id = request.form['referenceId']
  print(ref_id)
  #--> WWB9838yb3r47484

因此,我们使用request.files获取上传的文件,并使用request.form获取文本