【问题标题】:when to use use_ssl in http request何时在 http 请求中使用 use_ssl
【发布时间】:2020-06-27 20:57:31
【问题描述】:

我正在与 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 吗?

【问题讨论】:

    标签: ruby-on-rails ruby http ssl https


    【解决方案1】:

    简而言之-是的,通常是这样使用的:

    http.use_ssl = url.scheme == 'https'
    

    HTTP 和 HTTPS 的 TCP 端口不同:

    URI.parse("http://example.com").port # => 80
    URI.parse("https://example.com").port # => 443
    

    但一般来说,任何协议都可以在任何端口号上使用,并且传输库没有可靠的方法来知道要使用哪个协议。例如,您可以轻松地将服务器配置为在端口 443 上使用纯 http 进行应答,反之亦然。

    这就是use_ssl 的原因,它向 http 库表明应该使用 TLS/TLS 安全连接而不是普通的非加密连接来建立与该端口的连接。

    【讨论】:

    • 但是我在分配ssl=true之前已经分配了端口。
    • 以及为什么 ssl=false 无法建立连接?
    • @code0079 端口号不保证协议,use_ssl=false 它将尝试使用纯 http 连接到 ssl 端口(这对服务器来说听起来很希腊)
    猜你喜欢
    • 2017-03-26
    • 2018-03-05
    • 1970-01-01
    • 2017-11-28
    • 2017-02-22
    • 2021-09-12
    • 2018-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多