网络浏览器如何知道所请求的网址是https还是http?

5

当我在Chrome浏览器中输入google.com(注意,我没有指定它是http还是https),它会自动转到https://google.com,它是一个连接到443端口的安全套接字连接。那么,我的问题是,我的浏览器如何知道它应该连接到443而不是80?或者更简单地说,我的浏览器如何知道google.com使用安全套接字进行http通信?

3个回答

5

HTTP协议!

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
...

注意Location header中的https

然后Chrome会自动处理重定向,并将第二个请求发送到HTTPS端口。

GET / HTTP/1.1
Host: google.com
...

最终通过浏览器显示的内容由此返回:
HTTP/1.1 200 OK
....

这真的是一个详细的解释! - Daniel

1

浏览器通常首先尝试HTTP,然后获取到一个重定向到HTTPS。这是常见情况,但并非唯一情况。Chrome和Firefox支持 HTTP Strict Transport Security Preload Lists 的概念,这是一个网站列表,只能通过HTTPS进行访问,即使使用HTTP URL引用。

您可以在 此处 了解更多关于HSTS的内容。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接