无法通过https代理发送HTTP请求

时间:2020-02-11 17:06:07

标签: ruby proxy

我使用以下代码将Get / Post请求发送到我的服务器,并且代码可以正常工作。


require "net/https"
require "openssl"
require "uri"

tenantID = "95bde077-58e8-b58351b28b8a"
url = "https://example.com:443/application/0.9/providers?_filter=keyIndexName=xxxxx"

headers = {
  "Content-Type" => "application/json",
  "X-TenantID" => tenantID,
}

uri = URI.parse(url)

http_client = Net::HTTP.new(uri.host, uri.port)
http_client.use_ssl = true if uri.scheme == "https"
http_client.verify_mode = OpenSSL::SSL::VERIFY_PEER

p12 = OpenSSL::PKCS12.new(File.read("./keyfile.p12"), "0K4xgXbpzJkMrpGLILp4ZD7ijcdOnOkC")
http_client.cert = p12.certificate
http_client.key = p12.key
ca_store = OpenSSL::X509::Store.new
ca_store.add_file "./ca.pem"

request = Net::HTTP::Get.new(uri.request_uri, initheader = headers)
http_client.set_debug_output $stderr
res = http_client.request(request)

puts res.code
puts res.body

但是在我将代理添加到http_client之后,如下所示

proxy_uri = URI.parse("https://proxy.xxx.com:443")

http_client = Net::HTTP.new(uri.host, uri.port, proxy_uri.host, proxy_uri.port)

操作失败,总是提示

opening connection to proxy.xxx.com:443...
opened
<- "CONNECT example.com:443 HTTP/1.1\r\nHost: example.com.com:443\r\n\r\n"
-> "\x15\x03\x03\x00\x02\x02\n"
Conn close because of connect error wrong status line: "\x15\x03\x03\x00\x02\x02"
Traceback (most recent call last):
        6: from thread.rb:60:in `<main>'
        5: from /Users/xxxx/.rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/net/http.rb:1470:in `request'
        4: from /Users/xxxx/.rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/net/http.rb:919:in `start'
        3: from /Users/xxxx/.rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/net/http.rb:930:in `do_start'
        2: from /Users/xxxx/.rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/net/http.rb:969:in `connect'
        1: from /Users/xxxx/.rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/net/http/response.rb:29:in `read_new'
/Users/xxxx/.rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/net/http/response.rb:42:in `read_status_line': wrong status line: "\x15\x03\x03\x00\x02\x02" (Net::HTTPBadResponse)

我确认代理服务器未设置任何用户/密码身份验证。为什么代理服务器总是返回HTTPBadResponse。字符串“ \ x15 \ x03 \ x03 \ x00 \ x02 \ x02”是什么意思?

0 个答案:

没有答案
相关问题