Facebook 是一个 https 网站(https://facebook.com)当我输入http://facebook.com它连接没有任何问题,每个 https 网站都是这种情况吗?
答案1
每个 HTTPS 网站都是这种情况吗?
不。
HTTP(通常是端口 80)和 HTTPS(通常是端口 443)是两个完全独立的服务,但它们经常一起运行。
越来越频繁地,当你导航到 时http://example.com
,你将连接到一个服务器,其全权负责将您重定向至https://example.com
。
通常,如果您提供路径、查询字符串等...那么您将被重定向并保留这些内容。
例如,导航至http://facebook.com/abcdefg
只会将您转发到https://facebook.com/abcdefg
,而不考虑该页面是否实际存在(目前不存在 - 您最终将获得一个404)
$ curl -v http://facebook.com/abcdefg
* Trying 157.240.221.35...
* Connected to facebook.com (157.240.221.35) port 80 (#0)
> GET /abcdefg HTTP/1.1
> Host: facebook.com
> User-Agent: curl/7.47.0
> Accept: */*
>
< HTTP/1.1 302 Found
< Location: https://facebook.com/abcdefg
< Content-Type: text/html; charset="utf-8"
< X-FB-Debug: 2G7V3yvcTiKIEIYOnCwTSvQD5L6EMm615YxBaz//l1OagX1sknJlyy6Ogl6bHLtm8xyh9oC+C7+I0N3FpTv94g==
< Date: Wed, 13 May 2020 12:04:05 GMT
< Alt-Svc: h3-27=":443"; ma=3600
< Connection: keep-alive
< Content-Length: 0
<
* Connection #0 to host facebook.com left intact
就 Facebook 而言,实际上有第二个重定向将您转发到https://www.facebook.com/abcdefg
(添加www.
前缀)。
还有其他技术可以帮助确保网络安全,例如高速传输系统指示浏览器总是访问特定站点时使用 HTTPS...即使用户尝试使用 HTTP。
HSTS 还通过使用“预加载列表“其中包括许多顶级域名,并随浏览器一起提供。这意味着即使您以前从未访问过某个网站,您也可能会发现浏览器甚至不会尝试使用 HTTP。
从历史上看,当 HTTPS 还是新事物且价格昂贵时(从“证书需要花钱“从处理的角度来看),人们更常见的是同时提供对同一网站的 HTTP 和 HTTPS 访问,从而允许用户“决定“他们是否想要加密和身份验证。
答案2
这取决于网站。您看到的是http://facebook.. 被网站转换为https://facebook... 因此,http:// 已经普及,这根本不是问题,只是意味着向 https:// 的过渡正在进行中。我访问的大多数网站(但不是 100%)都是 https:// 。但这些网站会转换您的 http:// 以允许您访问。
答案3
这取决于网站,如果网站所有者需要允许没有 HTTPS(默认端口 443)客户端支持的用户连接,他们也倾向于运行 HTTP 服务器(默认端口 80)。