将Curl请求转换为Ruby HTTParty请求时遭遇401授权错误
解决HTTParty请求的401授权错误问题
我来帮你搞定这个授权问题!你之前的Ruby脚本里,Authorization请求头的格式没写对,这才导致了401 Unauthorized错误。
先看你能正常运行的curl命令:
curl my_interesting-api.herokuapp.com/ -H "Authorization: Token token=6bb4f31b5de728xxxxx360b3896"
这里的Authorization头完整值是Token token=6bb4f31b5de728xxxxx360b3896,而你的两种写法都没匹配这个格式:
- 第一种写法把header键写成了
"Authorization: Token token",这完全不符合HTTP头的规范(键应该只是Authorization) - 第二种写法只传了token字符串,缺了前面的
Token token=前缀
正确的Ruby脚本写法
把headers部分改成下面这样,就能和curl命令的请求头完全一致了:
require 'httparty' url = 'my_interesting-api.herokuapp.com/' response = HTTParty.get(url, headers: { "Authorization" => "Token token=6bb4f31b5de728xxxxx360b3896" } ) puts response.inspect
为什么这样写是对的?
HTTParty的headers参数是一个哈希,其中:
- 键是HTTP请求头的名称(比如
Authorization,不带冒号) - 值是该请求头的完整内容(也就是curl里
Authorization:后面的所有内容,包括Token token=和你的令牌)
这样调整后,请求头就和你成功运行的curl命令完全一致了,应该就能正常通过授权啦。
内容的提问来源于stack exchange,提问作者Mark Locklear
相关产品推荐
相关产品推荐

