如何尝试使用授权标头发出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
1条答案
按热度按时间h7appiyu1#
欢迎使用堆栈溢出:)
从我看到的情况来看,您进行基本身份验证的方式看起来不错。正如文档中所述
#basic_auth
方法遵循rfc2617,它负责base64编码。但我认为问题可能是如果你想申请
HTTPS
佩奇(不仅仅是HTTP
),您必须手动启用它才能使用ssl。可以通过设置use_ssl
向true
在你的Net::HTTP
例如:当使用
Net::HTTP.get(uri)
快捷方式时,库自动识别uri
用于受ssl保护的站点和交换机use_ssl
打旗子。但是,当需要在请求上设置额外的头时,如基本身份验证,这不起作用。在这种情况下,我们必须手动打开标志。为了测试这一点,我使用了这个w3拼图演示页面
https://jigsaw.w3.org/HTTP/Basic/
这是受用户保护的基本身份验证:guest
/pw:guest
然后这个请求似乎起了作用。