当我在Chrome中键入google.com(请注意,我没有指定它的http或https。)时,Chrome会自动转到https://google.com,这是一个连接到端口443的安全套接字连接。所以,我的问题是我的浏览器如何知道它应该连接到443而不是80?或者,更简单地说,我的浏览器如何知道google.com使用安全套接字来获取http?
答案 0 :(得分:2)
HTTP procotocol!
默认情况下,Chrome会附加 http:// 前缀,并将http://google.com请求发送到HTTP端口:
GET / HTTP/1.1
Host: google.com
...
然后google.com回复:
HTTP/1.1 301 Moved Permanently
Location: https:/google.com
...
请注意位置标头中的 https 。
然后,Chrome会自动处理重定向,并将第二个请求发送到HTTPS端口。
GET / HTTP/1.1
Host: google.com
...
最后回复浏览器中显示的内容:
HTTP/1.1 200 OK
....
答案 1 :(得分:1)
浏览器通常首先尝试HTTP,然后重定向到HTTPS。那是常见的案例,但不是唯一的案例。 Chrome和Firefox支持HTTP Strict Transport Security Preload Lists
的概念,{{1}}是仅应通过HTTPS联系的网站列表,即使使用HTTP网址引用也是如此。
您可以详细了解HSTS here。
答案 2 :(得分:0)
它不是您的浏览器,而是谷歌将http://www.google.com重定向到https://www.google.com。