python中Requests包中的授权头

时间:2017-09-13 05:58:01

标签: python get python-requests

我正在尝试使用请求包编写python脚本,以使用组织内托管的在线mongodb查询服务API。 API期望授权标题格式为&#;; websitename / username:Password'并使用基本身份验证base64编码。我尝试使用具有以下格式的授权标头的请求包创建GET请求:

import requests

headers = {'Authorization': 'Basic %s' % 'Base64encoded 
websitename/username:Password string here'}

content_res = requests.get(get_url, headers = headers).json()
  

但我在这里得到一个解析错误,因为我认为请求包中标题的预期字符串是' username:password'这里而不是所需的格式,即' websitename / username:password'。

我是否有办法以服务所期望的格式使用base64编码的sting,即' websitename / username:password'在请求包中?

非常感谢任何帮助。

感谢。

2 个答案:

答案 0 :(得分:1)

听起来我觉得您收到HTTP响应错误,因为您传递的授权标头值不是base64编码的。要更正此问题,您只需使用base64 python模块对字符串进行编码:

Python 2.7 https://docs.python.org/2/library/base64.html

Python 3.5 https://docs.python.org/3.5/library/base64.html

一个例子是这样的:

import base64
import requests

website = 'example.com'
username = 'root'
password = '1234'
auth_str = '%s/%s:%s' % (website, username, password)
b64_auth_str = base64.b64encode(auth_str)

headers = {'Authorization': 'Basic %s' % b64_auth_str}

content_res = requests.get(get_url, headers=headers).json()

答案 1 :(得分:0)

import base64
import requests

website = 'example.com'
username = 'root'
password = '1234'
auth_str = '%s/%s:%s' % (website, username, password)
b64_auth_str = base64.b64encode(auth_str.encode('ascii'))
headers = {'Authorization': 'Basic %s' % b64_auth_str}
content_res = requests.get(get_url, headers=headers).json()