Ruby Net::HTTP 使用 SSL

Ruby Net::HTTP using SSL

我有一个非常简单的 API,我想制作一个 POST 来使用 ruby 而不是使用 GEM 只是内置库 net/httpuriopenssl(如果需要)。

无论如何,我正在使用下面的代码发出一个非常简单的 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 之后,问题解决了,上面的代码有效了!