chrome 等浏览器自动跳转 https 处理
Chrome 自动将 HTTP 请求升级为 HTTPS 是因为它的 HSTS(HTTP Strict Transport Security) 机制以及浏览器默认的安全策略。这种行为有助于提高网站的安全性,防止中间人攻击或数据泄露。以下是 Chrome 自动变为 HTTPS 的几个常见原因:
1. HSTS(HTTP Strict Transport Security)机制
- HSTS 是一种安全机制,允许网站告诉浏览器未来的所有请求都必须使用 HTTPS,甚至在用户手动输入 HTTP 时,也会自动升级为 HTTPS。
- 如果你访问过某个网站,且该网站通过响应头启用了 HSTS,那么浏览器会记住该指令并自动将之后的所有 HTTP 请求转换为 HTTPS,直到 HSTS 过期。
- 你可以通过以下方式查看是否某个网站启用了 HSTS:
- 在 Chrome 中输入
chrome://net-internals/#hsts
。 - 在
Query HSTS/PKP domain
中输入该域名并点击查询,查看 HSTS 是否启用以及过期时间。
- 在 Chrome 中输入
2. Chrome 的 HSTS 预加载列表
- 一些流行的网站(如 Google、Facebook 等)已经被包含在 Chrome 的 HSTS 预加载列表中。这意味着,即使用户从未访问过这些网站,Chrome 也会强制它们使用 HTTPS。
- 网站管理员可以将自己的网站添加到 HSTS 预加载列表中,所以如果某个网站在这个列表中,Chrome 会始终尝试使用 HTTPS 访问它。
3. 浏览器缓存
- 如果你之前访问过某个网站的 HTTPS 版本,Chrome 可能会在缓存中保留该信息,并在未来再次访问该网站时优先尝试使用 HTTPS。
- 清理浏览器缓存可能会暂时解决这个问题,但如果该网站启用了 HSTS 或在预加载列表中,问题还会复现。
4. 自动 HTTPS 升级功能
- Chrome 默认尝试为用户提供最安全的连接。如果 Chrome 检测到同一网站的 HTTP 版本和 HTTPS 版本都可用,它会自动将用户引导到 HTTPS 版本。这是一种安全策略,旨在确保用户的连接受到加密保护。
解决方案
如果你不希望 Chrome 自动将某些 HTTP 请求升级为 HTTPS,可以尝试以下几种方法:
-
清除 HSTS 设置(对于特定站点):
- 打开
chrome://net-internals/#hsts
。 - 在 "Delete domain security policies" 中输入你想要清除 HSTS 的域名,然后点击
Delete
。 - 这会清除该域名的 HSTS 记录,允许你再次通过 HTTP 访问。
- 打开
-
使用非 HSTS 预加载的网站:
- 确保你访问的网站没有被 HSTS 预加载。如果网站已经被列入 HSTS 预加载列表,没有简单的方法来绕过 HTTPS。
-
测试在隐身模式下:
- 在 Chrome 的隐身模式下访问网站,因为隐身模式不会使用缓存。如果隐身模式下仍然自动升级为 HTTPS,可能是网站本身启用了 HSTS 或在预加载列表中。
-
尝试其他浏览器:
- 如果你无法禁用 Chrome 的 HSTS 行为,可以尝试在其他浏览器中进行访问,看看是否有相同的问题。
总结
Chrome 强制将 HTTP 升级为 HTTPS 是为了保护用户的安全,防止敏感信息通过不安全的 HTTP 连接被窃取。这种行为主要由 HSTS 和 Chrome 的安全策略驱动。你可以通过清除 HSTS 记录或者使用其他方式临时解决这个问题,但长远来看,使用 HTTPS 是更安全的选择。