如何使用 python 请求模块创建自定义标头
Posted
技术标签:
【中文标题】如何使用 python 请求模块创建自定义标头【英文标题】:How to create custom headers with python requests module 【发布时间】:2020-11-22 15:50:35 【问题描述】:我正在编写一个 python 脚本来执行 OAuth client_credentials 类型授权,并且获取的不记名令牌需要在下一个 URL 请求中作为“Authorization”标头参数传递。
我能够执行获取不记名令牌作为响应我得到一个字符串令牌。现在我需要在下一个请求头中传递这个字符串。下面是代码sn-p
def getOAuthToken():
ClientAuth = requests.auth.HTTPBasicAuth(ClientId, ClientSecret)
PostData = "grant_type": "client_credentials"
TokenResponse = requests.post(TokenUrl, auth=ClientAuth, data=PostData)
if(TokenResponse.ok):
print("Token Json response is success")
print(TokenResponse.content)
else:
print("Error in json response")
TokenJson = TokenResponse.json()
AccessToken = "Bearer "+TokenJson["access_token"]
print("AccessToken =",AccessToken)
def GetOAuthJsonResponse(Url, Headers):
JsonResponse = requests.get(Url, headers=Headers)
print(JsonResponse.status_code)
if(JsonResponse.ok):
print("Token Json response is success")
else:
print("Error in json response")
#AccessToken is the Bearer token received from authorization server
#Sample AccessToken will be like "Bearer 123475755959"
Headers = 'Authorization': AccessToken
GetOAuthJsonResponse(OAuthBaseUrl, Headers)
这样做会得到 401 作为 status_code。 401 表示未经授权的访问。这似乎在将访问令牌添加到标头时做错了。 任何人都可以帮助我吗?
【问题讨论】:
确保您的 AccessToken 如评论所述,格式为“Bearer ” 已验证 AccessToken 的类型为 Bearer授权标头需要类似Bearer <accestoken>
的结果。试试这条线:
Headers = 'Authorization': f"Bearer AccessToken"
这会以正确的格式格式化标题。
【讨论】:
感谢您的快速回复。添加了建议的更改,但仍将 401 视为状态代码。 错误地将访问令牌硬编码为静态值。与上述建议的标题格式一起进行的小修改工作正常。现在正在从经过身份验证的 rest api 获得成功响应。 很高兴我能帮上忙:)以上是关于如何使用 python 请求模块创建自定义标头的主要内容,如果未能解决你的问题,请参考以下文章
如何使用js或jQuery向ajax请求添加自定义HTTP标头?
如何访问 Django Rest Framework 上的自定义 HTTP 请求标头?