当我输入google.com(注意,我没有指定它的HTTP或HTTPS。)在镀铬,镀铬自动进入https://google.com,这是一个安全的套接字连接,连接到端口443.所以,我的问题是我的浏览器如何知道它应该连接到443而不是80?或者,更简单地说,我的浏览器如何知道google.com使用安全套接字的http?如何在Web浏览器知道,如果被请求的URL为https或http
1
A
回答
1
HTTP协议!
铬默认追加的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
....
0
它不是你的浏览器,而是谷歌重定向http://www.google.com到https://www.google.com。
1
浏览器通常尝试HTTP第一,然后得到重定向到HTTPS。这是常见的的情况,但不是唯一的情况。 Chrome和Firefox支持HTTP Strict Transport Security Preload Lists
的概念,即仅通过HTTPS联系的网站列表,即使以HTTP URL引用也是如此。
您可以了解更多关于HSTS here的信息。
相关问题
- 1. 如何在web浏览器的url中发送referer请求
- 2. Web浏览器如何知道要打开哪个连接,HTTP或HTTP?
- 3. 请求URL以HTTP或HTTPS在C#
- 4. 我的浏览器如何将我的http请求转换为https?
- 5. 如何区分Web View或普通浏览器的请求
- 6. 如何知道php脚本是HTTPS请求而不是HTTP?
- 7. 如何知道对servlet的请求是否使用HTTP或HTTPS执行?
- 8. 浏览器在请求时如何知道发送给服务器的cookie?
- 9. 如果JavaScript在浏览器中被禁用,请求Ajax请求是否有效?
- 10. 浏览器如何知道给定的URL存在RSS提要
- 11. 如何知道一个请求是否被保护的url
- 12. 如何将curl请求转换为浏览器URL
- 13. 如何使用Java(Apache HTTP Client)模拟浏览器HTTPS POST请求?
- 14. 如何检查HTTP请求是否在浏览器中打开?
- 15. 浏览器如何知道scss文件?
- 16. IIS如何阻止来自浏览器的http请求
- 17. 如何处理来自浏览器的http请求使用c#
- 18. 如何从一个简单的URL的Web浏览器发生多个请求?
- 19. 浏览器如何知道网站是否支持HTTP/2?
- 20. HTTPS是通过浏览器取消我的要求被视为HTTP requeset
- 21. 如何Python请求跟随我的浏览器的URL
- 22. 浏览器编码HTTP请求
- 23. Http请求多浏览器麻烦
- 24. 浏览器网址和HTTP请求
- 25. 如何确定HTTP请求是来自浏览器还是其他Web服务?
- 26. 浏览器如何知道哪个响应属于哪个请求?
- 27. 如何使用HTTP请求从浏览器
- 28. 如何从浏览器发送http删除请求?
- 29. 如何模拟请求浏览器C#?
- 30. 如何让谷歌浏览器(或其他浏览器)发送发布请求?
这真是一个详细的解释! – Daniel 2014-09-23 23:42:27