当我们输入不带协议的网站名称时,浏览器会给出正确的网站及其正确的协议(即 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 重定向。