Ruby on rails Ruby Net::使用SSL的HTTP
我有一个非常简单的API,我想发布一篇关于使用ruby而不是使用GEM的文章,只要内置库Ruby on rails Ruby Net::使用SSL的HTTP,ruby-on-rails,ruby,ssl,net-http,Ruby On Rails,Ruby,Ssl,Net Http,我有一个非常简单的API,我想发布一篇关于使用ruby而不是使用GEM的文章,只要内置库net/http,uri,以及openssl(如果需要) 无论如何,我正在使用下面的代码来做一个非常简单的POST请求,但是我得到了一些非常奇怪的结果,并且希望其他人已经看到了这一点 我也在POSTMAN和NodeJS中测试了相同的请求,两个都按预期工作,我唯一不能工作的是Ruby require 'uri' require 'net/http' require 'openssl' url = URI("h
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
结果是我以前从未见过的:我得到了两次标题key
。。。因此,API的日志显示如下查询:
从设备中选择*键='1234567,1234567'限制…
如上所述,我可以通过邮递员或NodeJS提出同样的请求,并得到正确的结果
注意:因为我有API的本地副本,所以我可以在本地测试,但它不是SSL,而是通过http进行测试。在本地发出请求时,它可以正常工作。因此,从我所知道的情况来看,这个问题只在引入SSL时才会出现
任何帮助都将是惊人的!谢谢
Ruby版本
2.2.1
问题在于我在最初的问题中没有列出的东西。API正在使用AWS API网关,并且在导致此奇怪问题的方法上启用了HTTP\u PROXY
。在我删除HTTP\u PROXY
之后,问题就解决了,上面的代码也起了作用 除非您正在创建一个新协议,否则我建议使用一个已建立的协议,而不是Net::HTTP。重新发明一个轮子可能会浪费很多时间,造成很多挫折。使用哪一个由您决定。SSL不会导致这个问题,它只是一个管道。如果没有更多的代码,我们无法真正诊断问题,我们只能猜测;也许服务器端API在处理数据的SSL端时有问题。阅读“”和链接页面以及“”会有所帮助。API已经过检查,我可以用POSTMAN或其他在NodeJS和Curl中测试过的编程语言发出相同的请求,它们都能正常工作。我已经尝试使用REST客户机并得到相同的问题,所以我想现在退出GEM,看看我能弄清楚到底发生了什么。嗯,考虑到这种情况,SSL管道被Rails和各种其他客户端测试得非常严重,所以如果发生了重复的数据,或者数据被破坏了,这可能会发生在所有地方,并且代码所涉及的任何系统都会出现问题。我们需要能够根据您问题中的代码复制问题,因此我们需要更多信息。您的Ruby版本已过时,这将影响Ruby及其OpenSSL。也许更新它会有所帮助。