问题描述
我正在尝试触发一个 GET 请求,我需要发送两个 cookie(我通过在我的网站上进行身份验证后检查浏览器 cookie 来获取这些)来授权我的请求。但是,当我使用法拉第 gem 尝试下面的 ruby 代码时,我收到一个未经授权的访问错误,当我使用邮递员发送相同的 cookie 数据时,情况并非如此( https://learning.postman.com/docs/sending-requests/cookies/)。谁能看到我做错了什么?
url = "https://someurl.com/random_data"
resp = Faraday.get(url) do |req|
req.headers['cookie'] = '{"credential_1":' + @credentials["credential_1"] + ',"credential_2":' + @credentials["credential_2"]}'
end
解决方法
由于错误构造的 cookie(需要用 ';' 拼凑起来)而无法工作。按照这个答案 https://stackoverflow.com/a/42911732/427499,我重写了 cookie 的程序集,如下所示,现在可以使用了。
url = "https://someurl.com/random_data"
resp = Faraday.get(url) do |req|
cookie_hash = {"credential_1" => @auth_credentials["credential_1"],"credential_2" => @auth_credentials["credential_2"]}
req.headers['Cookie'] = cookie_hash.map { |key,value| "#{key}=#{value}" } .join('; ')
end