我正在与 URL 建立 HTTP 连接。当我使用 http.use_ssl=false
它不起作用,响应为 400 错误。当我使用 http.use_ssl=true
有用。这是为什么?
url = "https://beta.makaan-ws.com/"
uri = URI.parse(url)
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Put.new(uri.request_uri)
headers.each do |header_key, header_val|
request.add_field(header_key, header_val)
end
request.body = post_args.to_json
begin
response = http.request(request)
rescue
raise "Error from url: #{url}"
end
我想了解
use_ssl
的作用?如果 URL 是 https 类型,我们是否必须分配 true ?
最佳答案
简而言之 - 是的,通常它是这样使用的:
http.use_ssl = url.scheme == 'https'
HTTP 和 HTTPS 的 TCP 端口不同:
URI.parse("http://example.com").port # => 80
URI.parse("https://example.com").port # => 443
但一般来说,任何协议(protocol)都可以在任何端口号上使用,并且传输库没有可靠的方法来知道要使用哪个协议(protocol)。例如,您可以轻松地将服务器配置为在端口 443 上使用纯 http 进行应答,反之亦然。
这就是为什么这里是
use_ssl
,它向 http 库指示应该使用 TLS/TLS 安全连接而不是普通的非加密连接来建立与该端口的连接。
关于ruby-on-rails - 何时在 http 请求中使用 use_ssl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60711185/