如果请求的URL是https还是http,Web浏览器如何知道

时间:2014-09-23 20:38:16

标签: web-services sockets http url https


当我在Chrome中键入google.com(请注意,我没有指定它的http或https。)时,Chrome会自动转到https://google.com,这是一个连接到端口443的安全套接字连接。所以,我的问题是我的浏览器如何知道它应该连接到443而不是80?或者,更简单地说,我的浏览器如何知道google.com使用安全套接字来获取http?

3 个答案:

答案 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