Rails http GET请求没有ssl验证和基本身份验证

时间:2015-12-17 10:59:53

标签: ruby-on-rails http-basic-authentication

我正在尝试按标题中的指定制作http get请求。 我写的:

uri = URI.parse("https://myaddress.com")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE 
@data = http.get(uri.request_uri)

请求发送到我想要发送的地方,我收到一个未经授权的响应(正如预期的那样,因为我没有指定基本身份验证)。

我试过了

http.basic_auth 'user', 'pass'

但是对于我的http变量的类型,没有这样的方法。 如何添加身份验证详细信息?

更新:我尝试使用像RUBY - SSL, Basic Auth, and POST这样的东西,但在用Get替换Post后,我不能使用'use_ssl',也不能使用'verify_mode'属性(我没有得到这样的属性错误)。

更新2:我发现我可以在Net :: HTTP对象上设置'use_ssl'属性,在Net :: HTTP :: Get对象上设置'basic_auth'。 现在的问题是如何让它们一起工作?

1 个答案:

答案 0 :(得分:4)

好吧,我最终找到了答案。也许这会对其他人有所帮助:

url = URI.parse('https://myaddress.com')
req = Net::HTTP::Get.new(url.path)
req.basic_auth 'user', 'pass'

sock = Net::HTTP.new(url.host, url.port)
sock.use_ssl = true
sock.verify_mode = OpenSSL::SSL::VERIFY_NONE

resp = sock.start {|http| http.request(req) }