ruby使用base64头生成http get请求

ruyhziif  于 2021-09-29  发布在  Java
关注(0)|答案(1)|浏览(333)

如何尝试使用授权标头发出http请求?我正在尝试发出http请求,但我需要将其包含在标头中 "Basic" + Base64::strict_encode64("example@email.com:34infds88ae23fdsfasd3241c930e") 运行下面的代码时出现的错误是 Failed to open TCP connection to www.exampleWebsite.com:443 (getaddrinfo: nodename nor servname provided, or not known) (SocketError) 我正在努力

uri = URI.parse("https://www.example.website.com/api/v2/users")
http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Get.new(uri.path)
request.basic_auth("example@email.com", "34infds88ae23fdsfasd3241c930e")
response = http.request(request)
puts response.body
h7appiyu

h7appiyu1#

欢迎使用堆栈溢出:)
从我看到的情况来看,您进行基本身份验证的方式看起来不错。正如文档中所述 #basic_auth 方法遵循rfc2617,它负责base64编码。
但我认为问题可能是如果你想申请 HTTPS 佩奇(不仅仅是 HTTP ),您必须手动启用它才能使用ssl。可以通过设置 use_ssltrue 在你的 Net::HTTP 例如:

uri = URI.parse("https://www.example.website.com/api/v2/users")
http = Net::HTTP.new(uri.host, uri.port)

http.use_ssl = true # <- this

request = Net::HTTP::Get.new(uri.path)
request.basic_auth("example@email.com", "34infds88ae23fdsfasd3241c930e")
response = http.request(request)
puts response.body

当使用 Net::HTTP.get(uri) 快捷方式时,库自动识别 uri 用于受ssl保护的站点和交换机 use_ssl 打旗子。但是,当需要在请求上设置额外的头时,如基本身份验证,这不起作用。在这种情况下,我们必须手动打开标志。
为了测试这一点,我使用了这个w3拼图演示页面 https://jigsaw.w3.org/HTTP/Basic/ 这是受用户保护的基本身份验证: guest /pw: guest 然后这个请求似乎起了作用。

相关问题