Python 请求库如何使用单个令牌传递授权标头

新手上路,请多包涵

我有一个请求 URI 和一个令牌。如果我使用:

 curl -s "<MY_URI>" -H "Authorization: TOK:<MY_TOKEN>"

等等,得到一个200,查看对应的JSON数据。所以,我安装了请求,当我尝试访问这个资源时,我得到一个 403 可能是因为我不知道传递该令牌的正确语法。谁能帮我弄清楚?这就是我所拥有的:

 import sys,socket
import requests

r = requests.get('<MY_URI>','<MY_TOKEN>')
r. status_code

我已经尝试过:

 r = requests.get('<MY_URI>',auth=('<MY_TOKEN>'))
r = requests.get('<MY_URI>',auth=('TOK','<MY_TOKEN>'))
r = requests.get('<MY_URI>',headers=('Authorization: TOK:<MY_TOKEN>'))

但这些都不起作用。

原文由 user1552586 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 302
2 个回答

在蟒蛇中:

 ('<MY_TOKEN>')

相当于

'<MY_TOKEN>'

并要求解释

('TOK', '<MY_TOKEN>')

当您希望请求使用基本身份验证并制作授权标头时,如下所示:

 'VE9LOjxNWV9UT0tFTj4K'

这是 'TOK:<MY_TOKEN>' 的 base64 表示

要传递您自己的标头,您需要像这样传入一个字典:

 r = requests.get('<MY_URI>', headers={'Authorization': 'TOK:<MY_TOKEN>'})

原文由 Ian Stapleton Cordasco 发布,翻译遵循 CC BY-SA 3.0 许可协议

我正在寻找类似的东西并遇到了 这个。它看起来像你提到的第一个选项

r = requests.get('<MY_URI>', auth=('<MY_TOKEN>'))

“auth”有两个参数:用户名和密码,所以实际语句应该是

r=requests.get('<MY_URI>', auth=('<YOUR_USERNAME>', '<YOUR_PASSWORD>'))

在我的例子中,没有密码,所以我将 auth 字段中的第二个参数留空,如下所示:

 r=requests.get('<MY_URI', auth=('MY_USERNAME', ''))

希望这对某人有帮助:)

原文由 BajajG 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题