$ EXCON_DEBUG=true irb -r excon
irb(main):001:0> Excon.get "https://www.howsmyssl.com/a/check"
excon.request {:chunk_size=>1048576, :ciphers=>"HIGH:!SSLv2:!aNULL:!eNULL:!3DES", :connect_timeout=>60, :debug_request=>false, :debug_response=>false, :headers=>{"User-Agent"=>"excon/0.31.0", "Host"=>"www.howsmyssl.com:443"}, :idempotent=>false, :instrumentor_name=>"excon", :middlewares=>[Excon::Middleware::ResponseParser, Excon::Middleware::Expects, Excon::Middleware::Idempotent, Excon::Middleware::Instrumentor, Excon::Middleware::Mock], :mock=>false, :nonblock=>true, :omit_default_port=>false, :persistent=>false, :read_timeout=>60, :retry_limit=>4, :ssl_verify_peer=>true, :tcp_nodelay=>false, :uri_parser=>URI, :write_timeout=>60, :host=>"www.howsmyssl.com", :path=>"/a/check", :port=>443, :query=>nil, :scheme=>"https", :user=>nil, :password=>"REDACTED", :instrumentor=>Excon::StandardInstrumentor, :method=>:get, :retries_remaining=>4, :connection=>#<Excon::Connection:7fb5a188bc98 @data={:chunk_size=>1048576, :ciphers=>"HIGH:!SSLv2:!aNULL:!eNULL:!3DES", :connect_timeout=>60, :debug_request=>false, :debug_response=>false, :headers=>{"User-Agent"=>"excon/0.31.0"}, :idempotent=>false, :instrumentor_name=>"excon", :middlewares=>[Excon::Middleware::ResponseParser, Excon::Middleware::Expects, Excon::Middleware::Idempotent, Excon::Middleware::Instrumentor, Excon::Middleware::Mock], :mock=>false, :nonblock=>true, :omit_default_port=>false, :persistent=>false, :read_timeout=>60, :retry_limit=>4, :ssl_verify_peer=>true, :tcp_nodelay=>false, :uri_parser=>URI, :write_timeout=>60, :host=>"www.howsmyssl.com", :path=>"/a/check", :port=>443, :query=>nil, :scheme=>"https", :user=>nil, :password=>nil, :instrumentor=>Excon::StandardInstrumentor} @socket_key="https://www.howsmyssl.com:443">, :stack=>#<Excon::Middleware::ResponseParser:0x007fb5a188acd0 @stack=#<Excon::Middleware::Expects:0x007fb5a188acf8 @stack=#<Excon::Middleware::Idempotent:0x007fb5a188ad20 @stack=#<Excon::Middleware::Instrumentor:0x007fb5a188ad48 @stack=#<Excon::Middleware::Mock:0x007fb5a188ad98 @stack=#<Excon::Connection:7fb5a188bc98 @data={:chunk_size=>1048576, :ciphers=>"HIGH:!SSLv2:!aNULL:!eNULL:!3DES", :connect_timeout=>60, :debug_request=>false, :debug_response=>false, :headers=>{"User-Agent"=>"excon/0.31.0"}, :idempotent=>false, :instrumentor_name=>"excon", :middlewares=>[Excon::Middleware::ResponseParser, Excon::Middleware::Expects, Excon::Middleware::Idempotent, Excon::Middleware::Instrumentor, Excon::Middleware::Mock], :mock=>false, :nonblock=>true, :omit_default_port=>false, :persistent=>false, :read_timeout=>60, :retry_limit=>4, :ssl_verify_peer=>true, :tcp_nodelay=>false, :uri_parser=>URI, :write_timeout=>60, :host=>"www.howsmyssl.com", :path=>"/a/check", :port=>443, :query=>nil, :scheme=>"https", :user=>nil, :password=>nil, :instrumentor=>Excon::StandardInstrumentor} @socket_key="https://www.howsmyssl.com:443">>>>>>}
excon.response {:body=>"<a href=\"https://www.howsmyssl.com/a/check\">Moved Permanently</a>.\n\n", :headers=>{"Location"=>"https://www.howsmyssl.com/a/check", "Strict-Transport-Security"=>"max-age=631138519; includeSubdomains", "Date"=>"Thu, 30 Jan 2014 17:17:15 GMT", "Content-Length"=>"68", "Content-Type"=>"text/html; charset=utf-8", "Connection"=>"close"}, :status=>301, :remote_ip=>"54.245.96.51"}
=> #<Excon::Response:0x007fb5a3a32978 @data={:body=>"<a href=\"https://www.howsmyssl.com/a/check\">Moved Permanently</a>.\n\n", :headers=>{"Location"=>"https://www.howsmyssl.com/a/check", "Strict-Transport-Security"=>"max-age=631138519; includeSubdomains", "Date"=>"Thu, 30 Jan 2014 17:17:15 GMT", "Content-Length"=>"68", "Content-Type"=>"text/html; charset=utf-8", "Connection"=>"close"}, :status=>301, :remote_ip=>"54.245.96.51"}, @body="<a href=\"https://www.howsmyssl.com/a/check\">Moved Permanently</a>.\n\n", @headers={"Location"=>"https://www.howsmyssl.com/a/check", "Strict-Transport-Security"=>"max-age=631138519; includeSubdomains", "Date"=>"Thu, 30 Jan 2014 17:17:15 GMT", "Content-Length"=>"68", "Content-Type"=>"text/html; charset=utf-8", "Connection"=>"close"}, @status=301, @remote_ip="54.245.96.51">
irb(main):002:0> Excon.get "https://www.howsmyssl.com/a/check", omit_default_port: true
excon.request {:chunk_size=>1048576, :ciphers=>"HIGH:!SSLv2:!aNULL:!eNULL:!3DES", :connect_timeout=>60, :debug_request=>false, :debug_response=>false, :headers=>{"User-Agent"=>"excon/0.31.0", "Host"=>"www.howsmyssl.com"}, :idempotent=>false, :instrumentor_name=>"excon", :middlewares=>[Excon::Middleware::ResponseParser, Excon::Middleware::Expects, Excon::Middleware::Idempotent, Excon::Middleware::Instrumentor, Excon::Middleware::Mock], :mock=>false, :nonblock=>true, :omit_default_port=>true, :persistent=>false, :read_timeout=>60, :retry_limit=>4, :ssl_verify_peer=>true, :tcp_nodelay=>false, :uri_parser=>URI, :write_timeout=>60, :host=>"www.howsmyssl.com", :path=>"/a/check", :port=>443, :query=>nil, :scheme=>"https", :user=>nil, :password=>"REDACTED", :instrumentor=>Excon::StandardInstrumentor, :method=>:get, :retries_remaining=>4, :connection=>#<Excon::Connection:7fb5a3a19b58 @data={:chunk_size=>1048576, :ciphers=>"HIGH:!SSLv2:!aNULL:!eNULL:!3DES", :connect_timeout=>60, :debug_request=>false, :debug_response=>false, :headers=>{"User-Agent"=>"excon/0.31.0"}, :idempotent=>false, :instrumentor_name=>"excon", :middlewares=>[Excon::Middleware::ResponseParser, Excon::Middleware::Expects, Excon::Middleware::Idempotent, Excon::Middleware::Instrumentor, Excon::Middleware::Mock], :mock=>false, :nonblock=>true, :omit_default_port=>true, :persistent=>false, :read_timeout=>60, :retry_limit=>4, :ssl_verify_peer=>true, :tcp_nodelay=>false, :uri_parser=>URI, :write_timeout=>60, :host=>"www.howsmyssl.com", :path=>"/a/check", :port=>443, :query=>nil, :scheme=>"https", :user=>nil, :password=>nil, :instrumentor=>Excon::StandardInstrumentor} @socket_key="https://www.howsmyssl.com">, :stack=>#<Excon::Middleware::ResponseParser:0x007fb5a3a18b90 @stack=#<Excon::Middleware::Expects:0x007fb5a3a18bb8 @stack=#<Excon::Middleware::Idempotent:0x007fb5a3a18be0 @stack=#<Excon::Middleware::Instrumentor:0x007fb5a3a18c08 @stack=#<Excon::Middleware::Mock:0x007fb5a3a18c58 @stack=#<Excon::Connection:7fb5a3a19b58 @data={:chunk_size=>1048576, :ciphers=>"HIGH:!SSLv2:!aNULL:!eNULL:!3DES", :connect_timeout=>60, :debug_request=>false, :debug_response=>false, :headers=>{"User-Agent"=>"excon/0.31.0"}, :idempotent=>false, :instrumentor_name=>"excon", :middlewares=>[Excon::Middleware::ResponseParser, Excon::Middleware::Expects, Excon::Middleware::Idempotent, Excon::Middleware::Instrumentor, Excon::Middleware::Mock], :mock=>false, :nonblock=>true, :omit_default_port=>true, :persistent=>false, :read_timeout=>60, :retry_limit=>4, :ssl_verify_peer=>true, :tcp_nodelay=>false, :uri_parser=>URI, :write_timeout=>60, :host=>"www.howsmyssl.com", :path=>"/a/check", :port=>443, :query=>nil, :scheme=>"https", :user=>nil, :password=>nil, :instrumentor=>Excon::StandardInstrumentor} @socket_key="https://www.howsmyssl.com">>>>>>}
excon.response {:body=>"{\"given_cipher_suites\":[\"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384\",\"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384\",\"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384\",\"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384\",\"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA\",\"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA\",\"TLS_SRP_SHA_DSS_WITH_AES_256_CBC_SHA\",\"TLS_SRP_SHA_RSA_WITH_AES_256_CBC_SHA\",\"TLS_DHE_DSS_WITH_AES_256_GCM_SHA384\",\"TLS_DHE_RSA_WITH_AES_256_GCM_SHA384\",\"TLS_DHE_RSA_WITH_AES_256_CBC_SHA256\",\"TLS_DHE_DSS_WITH_AES_256_CBC_SHA256\",\"TLS_DHE_RSA_WITH_AES_256_CBC_SHA\",\"TLS_DHE_DSS_WITH_AES_256_CBC_SHA\",\"TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA\",\"TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA\",\"TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384\",\"TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384\",\"TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384\",\"TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384\",\"TLS_ECDH_RSA_WITH_AES_256_CBC_SHA\",\"TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA\",\"TLS_RSA_WITH_AES_256_GCM_SHA384\",\"TLS_RSA_WITH_AES_256_CBC_SHA256\",\"TLS_RSA_WITH_AES_256_CBC_SHA\",\"TLS_RSA_WITH_CAMELLIA_256_CBC_SHA\",\"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256\",\"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256\",\"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256\",\"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256\",\"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA\",\"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA\",\"TLS_SRP_SHA_DSS_WITH_AES_128_CBC_SHA\",\"TLS_SRP_SHA_RSA_WITH_AES_128_CBC_SHA\",\"TLS_DHE_DSS_WITH_AES_128_GCM_SHA256\",\"TLS_DHE_RSA_WITH_AES_128_GCM_SHA256\",\"TLS_DHE_RSA_WITH_AES_128_CBC_SHA256\",\"TLS_DHE_DSS_WITH_AES_128_CBC_SHA256\",\"TLS_DHE_RSA_WITH_AES_128_CBC_SHA\",\"TLS_DHE_DSS_WITH_AES_128_CBC_SHA\",\"TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA\",\"TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA\",\"TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256\",\"TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256\",\"TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256\",\"TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256\",\"TLS_ECDH_RSA_WITH_AES_128_CBC_SHA\",\"TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA\",\"TLS_RSA_WITH_AES_128_GCM_SHA256\",\"TLS_RSA_WITH_AES_128_CBC_SHA256\",\"TLS_RSA_WITH_AES_128_CBC_SHA\",\"TLS_RSA_WITH_CAMELLIA_128_CBC_SHA\",\"TLS_EMPTY_RENEGOTIATION_INFO_SCSV\"],\"ephemeral_keys_supported\":true,\"session_ticket_supported\":true,\"tls_compression_supported\":true,\"unknown_cipher_suite_supported\":false,\"beast_vuln\":false,\"able_to_detect_n_minus_one_splitting\":false,\"insecure_cipher_suites\":{},\"tls_version\":\"TLS 1.2\",\"rating\":\"Bad\"}", :headers=>{"Content-Length"=>"2306", "Connection"=>"close", "Content-Type"=>"application/json", "Date"=>"Thu, 30 Jan 2014 17:17:19 GMT", "Strict-Transport-Security"=>"max-age=631138519; includeSubdomains"}, :status=>200, :remote_ip=>"54.245.96.51"}
=> #<Excon::Response:0x007fb5a39e2a68 @data={:body=>"{\"given_cipher_suites\":[\"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384\",\"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384\",\"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384\",\"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384\",\"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA\",\"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA\",\"TLS_SRP_SHA_DSS_WITH_AES_256_CBC_SHA\",\"TLS_SRP_SHA_RSA_WITH_AES_256_CBC_SHA\",\"TLS_DHE_DSS_WITH_AES_256_GCM_SHA384\",\"TLS_DHE_RSA_WITH_AES_256_GCM_SHA384\",\"TLS_DHE_RSA_WITH_AES_256_CBC_SHA256\",\"TLS_DHE_DSS_WITH_AES_256_CBC_SHA256\",\"TLS_DHE_RSA_WITH_AES_256_CBC_SHA\",\"TLS_DHE_DSS_WITH_AES_256_CBC_SHA\",\"TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA\",\"TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA\",\"TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384\",\"TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384\",\"TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384\",\"TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384\",\"TLS_ECDH_RSA_WITH_AES_256_CBC_SHA\",\"TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA\",\"TLS_RSA_WITH_AES_256_GCM_SHA384\",\"TLS_RSA_WITH_AES_256_CBC_SHA256\",\"TLS_RSA_WITH_AES_256_CBC_SHA\",\"TLS_RSA_WITH_CAMELLIA_256_CBC_SHA\",\"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256\",\"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256\",\"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256\",\"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256\",\"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA\",\"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA\",\"TLS_SRP_SHA_DSS_WITH_AES_128_CBC_SHA\",\"TLS_SRP_SHA_RSA_WITH_AES_128_CBC_SHA\",\"TLS_DHE_DSS_WITH_AES_128_GCM_SHA256\",\"TLS_DHE_RSA_WITH_AES_128_GCM_SHA256\",\"TLS_DHE_RSA_WITH_AES_128_CBC_SHA256\",\"TLS_DHE_DSS_WITH_AES_128_CBC_SHA256\",\"TLS_DHE_RSA_WITH_AES_128_CBC_SHA\",\"TLS_DHE_DSS_WITH_AES_128_CBC_SHA\",\"TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA\",\"TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA\",\"TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256\",\"TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256\",\"TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256\",\"TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256\",\"TLS_ECDH_RSA_WITH_AES_128_CBC_SHA\",\"TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA\",\"TLS_RSA_WITH_AES_128_GCM_SHA256\",\"TLS_RSA_WITH_AES_128_CBC_SHA256\",\"TLS_RSA_WITH_AES_128_CBC_SHA\",\"TLS_RSA_WITH_CAMELLIA_128_CBC_SHA\",\"TLS_EMPTY_RENEGOTIATION_INFO_SCSV\"],\"ephemeral_keys_supported\":true,\"session_ticket_supported\":true,\"tls_compression_supported\":true,\"unknown_cipher_suite_supported\":false,\"beast_vuln\":false,\"able_to_detect_n_minus_one_splitting\":false,\"insecure_cipher_suites\":{},\"tls_version\":\"TLS 1.2\",\"rating\":\"Bad\"}", :headers=>{"Content-Length"=>"2306", "Connection"=>"close", "Content-Type"=>"application/json", "Date"=>"Thu, 30 Jan 2014 17:17:19 GMT", "Strict-Transport-Security"=>"max-age=631138519; includeSubdomains"}, :status=>200, :remote_ip=>"54.245.96.51"}, @body="{\"given_cipher_suites\":[\"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384\",\"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384\",\"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384\",\"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384\",\"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA\",\"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA\",\"TLS_SRP_SHA_DSS_WITH_AES_256_CBC_SHA\",\"TLS_SRP_SHA_RSA_WITH_AES_256_CBC_SHA\",\"TLS_DHE_DSS_WITH_AES_256_GCM_SHA384\",\"TLS_DHE_RSA_WITH_AES_256_GCM_SHA384\",\"TLS_DHE_RSA_WITH_AES_256_CBC_SHA256\",\"TLS_DHE_DSS_WITH_AES_256_CBC_SHA256\",\"TLS_DHE_RSA_WITH_AES_256_CBC_SHA\",\"TLS_DHE_DSS_WITH_AES_256_CBC_SHA\",\"TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA\",\"TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA\",\"TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384\",\"TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384\",\"TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384\",\"TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384\",\"TLS_ECDH_RSA_WITH_AES_256_CBC_SHA\",\"TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA\",\"TLS_RSA_WITH_AES_256_GCM_SHA384\",\"TLS_RSA_WITH_AES_256_CBC_SHA256\",\"TLS_RSA_WITH_AES_256_CBC_SHA\",\"TLS_RSA_WITH_CAMELLIA_256_CBC_SHA\",\"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256\",\"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256\",\"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256\",\"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256\",\"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA\",\"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA\",\"TLS_SRP_SHA_DSS_WITH_AES_128_CBC_SHA\",\"TLS_SRP_SHA_RSA_WITH_AES_128_CBC_SHA\",\"TLS_DHE_DSS_WITH_AES_128_GCM_SHA256\",\"TLS_DHE_RSA_WITH_AES_128_GCM_SHA256\",\"TLS_DHE_RSA_WITH_AES_128_CBC_SHA256\",\"TLS_DHE_DSS_WITH_AES_128_CBC_SHA256\",\"TLS_DHE_RSA_WITH_AES_128_CBC_SHA\",\"TLS_DHE_DSS_WITH_AES_128_CBC_SHA\",\"TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA\",\"TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA\",\"TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256\",\"TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256\",\"TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256\",\"TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256\",\"TLS_ECDH_RSA_WITH_AES_128_CBC_SHA\",\"TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA\",\"TLS_RSA_WITH_AES_128_GCM_SHA256\",\"TLS_RSA_WITH_AES_128_CBC_SHA256\",\"TLS_RSA_WITH_AES_128_CBC_SHA\",\"TLS_RSA_WITH_CAMELLIA_128_CBC_SHA\",\"TLS_EMPTY_RENEGOTIATION_INFO_SCSV\"],\"ephemeral_keys_supported\":true,\"session_ticket_supported\":true,\"tls_compression_supported\":true,\"unknown_cipher_suite_supported\":false,\"beast_vuln\":false,\"able_to_detect_n_minus_one_splitting\":false,\"insecure_cipher_suites\":{},\"tls_version\":\"TLS 1.2\",\"rating\":\"Bad\"}", @headers={"Content-Length"=>"2306", "Connection"=>"close", "Content-Type"=>"application/json", "Date"=>"Thu, 30 Jan 2014 17:17:19 GMT", "Strict-Transport-Security"=>"max-age=631138519; includeSubdomains"}, @status=200, @remote_ip="54.245.96.51">
Note in the first request (which redirects) the debug output shows that the request headers are {"User-Agent"=>"excon/0.31.0", "Host"=>"www.howsmyssl.com:443"}
and in the second one (which works as expected), they are: {"User-Agent"=>"excon/0.31.0", "Host"=>"www.howsmyssl.com"}
.