Ruby Net::HTTP 使用 SSL
Ruby Net::HTTP using SSL
我有一个非常简单的 API,我想制作一个 POST 来使用 ruby 而不是使用 GEM 只是内置库 net/http
、uri
和 openssl
(如果需要)。
无论如何,我正在使用下面的代码发出一个非常简单的 POST 请求,但得到了一些非常奇怪的结果,希望其他人已经看到了。
我还在 POSTMAN 和 NodeJS 中测试了下面的相同请求,两者都按预期工作,唯一无法工作的是 Ruby。
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://somesite.dev/devices")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Post.new(url)
request["key"] = '1234567'
response = http.request(request)
puts response.read_body
结果是我以前从未见过的:我得到了 header key
两次...所以 API 的日志显示了这样的查询:
SELECT * FROM device where key = '1234567, 1234567' LIMIT ...
如上所述,我可以通过 POSTMAN 或 NodeJS 发出相同的请求并获得正确的结果。
注意:因为我有 API 的本地副本,所以我可以在本地进行测试,但它不是 SSL,而是通过 http。在本地发出请求时,它工作得很好。所以据我所知,这个问题只有在引入 SSL 时才会出现。
任何帮助都会很棒!谢谢!!
Ruby版本2.2.1
问题出在我最初的问题中没有列出的内容。 API 正在使用 AWS API 网关,并且在导致此奇怪问题的方法上启用了 HTTP_PROXY
。在我删除 HTTP_PROXY
之后,问题解决了,上面的代码有效了!
我有一个非常简单的 API,我想制作一个 POST 来使用 ruby 而不是使用 GEM 只是内置库 net/http
、uri
和 openssl
(如果需要)。
无论如何,我正在使用下面的代码发出一个非常简单的 POST 请求,但得到了一些非常奇怪的结果,希望其他人已经看到了。
我还在 POSTMAN 和 NodeJS 中测试了下面的相同请求,两者都按预期工作,唯一无法工作的是 Ruby。
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://somesite.dev/devices")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Post.new(url)
request["key"] = '1234567'
response = http.request(request)
puts response.read_body
结果是我以前从未见过的:我得到了 header key
两次...所以 API 的日志显示了这样的查询:
SELECT * FROM device where key = '1234567, 1234567' LIMIT ...
如上所述,我可以通过 POSTMAN 或 NodeJS 发出相同的请求并获得正确的结果。
注意:因为我有 API 的本地副本,所以我可以在本地进行测试,但它不是 SSL,而是通过 http。在本地发出请求时,它工作得很好。所以据我所知,这个问题只有在引入 SSL 时才会出现。
任何帮助都会很棒!谢谢!!
Ruby版本2.2.1
问题出在我最初的问题中没有列出的内容。 API 正在使用 AWS API 网关,并且在导致此奇怪问题的方法上启用了 HTTP_PROXY
。在我删除 HTTP_PROXY
之后,问题解决了,上面的代码有效了!