创建 cookie 以通过法拉第 GET 请求发送

问题描述

我正在尝试触发一个 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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...