Web 浏览器如何知道所请求的 url 是 https 还是 http

Dan*_*iel 5 sockets url https web-services http


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

kie*_*wic 5

HTTP协议!

Chrome 默认情况下会附加http://前缀,并将http://google.com请求发送到 HTTP 端口:

GET / HTTP/1.1
Host: google.com
...
Run Code Online (Sandbox Code Playgroud)

然后google.com回复:

HTTP/1.1 301 Moved Permanently
Location: https://google.com
...
Run Code Online (Sandbox Code Playgroud)

请注意Location 标头中的https 。

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

GET / HTTP/1.1
Host: google.com
...
Run Code Online (Sandbox Code Playgroud)

最终回复浏览器中显示的内容:

HTTP/1.1 200 OK
....
Run Code Online (Sandbox Code Playgroud)