浏览器如何分别发送http和https请求

浏览器如何分别发送http和https请求

当我们输入不带协议的网站名称时,浏览器会给出正确的网站及其正确的协议(即 http 或 https)

例如,如果我输入 google.com 并按回车键,浏览器会给我https://google.com

浏览器是如何做到这一点的?

答案1

这不是标准化的行为,因为没有 RFC 文档说明如果用户未指定协议,客户端应如何操作。但可能在大多数默认配置中,客户端首先尝试使用不安全的连接(例如)。它们只是猜测您要在 URL 前面http://输入的内容。http://

在这种情况下,不是客户端知道此站点可通过安全连接访问(例如https://),而是 Web 服务器重定向客户端的请求。因此,当您google.com在浏览器的地址栏中输入时,浏览器首先连接到http://google.com,然后 Web 服务器将google.com您的请求重定向到https://google.com。这就是为什么您最终仍使用https://google 版本的原因。

您甚至可以尝试手动http://google.com在地址栏中输入网址。Google 仍会将您重定向到https://google.com。但这不是大多数网络服务器软件的默认行为,Google 必须在其网络服务器的配置中手动指定“HTTPS 重定向”。

不过,有些客户端可能会https://先尝试连接,只有http://在连接失败时才进行连接。这是一种更安全的行为,尽管在大多数情况下这可能不是默认行为,但例如高速传输系统允许网站将自己标记为https://,某些网站甚至可能在浏览器中预先标记。(正如 @kicken 指出的那样,谢谢!)然后有浏览器插件(例如 Firefox 的“HTTPS Everywhere”)可以实现此过程。这些插件附带提供https://安全连接的站点列表,当用户输入此类站点的 URL 时,无论http://前面是否带有协议,用户都会被https://浏览器重定向到该版本,而不是由网络服务器重定向,即使网站管理员没有为其站点设置 HTTPS 重定向。

相关内容