Facebook是一个https网站(https://facebook.com),当我输入http://facebook.com时,它连接没有任何问题,每个https网站都是这种情况吗?
每个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.
前缀)。
还有其他有助于保护网络安全的技术,例如HSTS,它指示浏览器在联系特定站点时始终使用HTTPS ...即使用户尝试使用HTTP,也是如此。
HSTS还通过使用“预加载列表”进行扩展,该预加载列表包括许多顶级域名,并且随浏览器一起提供。这意味着,即使您以前从未访问过站点,也可能会发现浏览器甚至没有尝试使用HTTP。
从历史上看,当HTTPS是新的并且仍然很昂贵时(从“证书花费钱”和处理的角度来看),人们更普遍地向同一站点提供HTTP和HTTPS访问,从而允许用户“决定”他们是否想要加密和身份验证。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句