Chrome 向所有请求添加了奇怪的 HTTPS:1 标头

Chrome 向所有请求添加了奇怪的 HTTPS:1 标头

我在与 HTTPS 相关的网站上遇到了很多奇怪的错误。这些网站在 FF 和 IE 中运行良好,但在 Chrome 中却无法加载。似乎尽管我请求的是一个不安全的 URL (http),但 Google Chrome 还是HTTPS:1在请求中添加了一个额外的标头。

这会导致一些服务器(可能是一些使用卸载 SSL 并提供共享主机的服务器)响应错误,因为服务器上没有 SSL。

我没有被重定向到安全页面(HTTPS),而是源中的所有内部 URL 都被编辑为 https。

我已经用 Fiddler 检查了连接。我的电脑没有进行此解析,唯一的区别就是这个HTTPS:1标头。

我创建了一个简单的 PHP 页面来打印$_SERVER变量。当我使用 Chrome 访问它时,我可以看到:[HTTP_HTTPS] => 1。使用 FireFox 则看不到它。

我尝试清除所有数据、取消 Chrome 与我的 Google 帐户的配对以及从头开始删除和安装 Chrome。

有人知道这个吗?这让我抓狂。

答案1

您遇到问题的那些网站很可能正在运行错误解释HTTPS: 1请求标头的服务器代码。例如,Wordpress WooCommerce 插件,它正在大约900,000 个网站,有错误代码,无法正确处理HTTPS: 1标头。请参阅其最新补丁文档:https://woocommerce.wordpress.com/2015/07/07/woocommerce-2-3-13-security-and-maintenance-release/

StackOverflow 上有一个类似的帖子:https://stackoverflow.com/questions/31565155/wordpress-woocommerce-forces-https-when-it-shouldnt/31570584#31570584

更详细地说:Chrome 已经实现了升级不安全请求万维网联盟 (W3C) 的规范。第 3.2.1 节该规范的Upgrade-Insecure-Requests HTTP 请求标头字段哪些州

3.2.1. Upgrade-Insecure-Requests HTTP 请求标头字段

Upgrade-Insecure-Requests HTTP 请求标头字段向服务器发送一个信号,表达客户端对加密和验证响应的偏好,并且它可以成功处理 upgrade-insecure-requests 指令,以使该偏好尽可能无缝地提供。

此偏好由以下 ANBF 表示:

“升级不安全请求:”*WSP“1”*WSP

https:\\如果HTTPS: 1在非安全(http)请求中设置了标头,则像在 Wordpress 中运行 WooCommerce 插件的网站会错误地将响应中的所有 URL 重写为链接。

作为该网站的最终用户,唯一简单的解决方法是使用 Chrome 以外的浏览器,直到这些网站修复

答案2

显然版本 44 中的一个错误似乎在最新更新中得到了修复。我现在使用的是 44.0.2403.107,问题似乎已经消失。

更多信息请点击这里:http://www.zdnet.com/article/brand-new-chrome-44-release-added-a-bug/

答案3

不仅仅是 wocommerce,整个 wordpress 都出现了问题,导致糟糕的 css、图像等等。

将其添加到 wp-config.php 顶部附近以将其删除

if($_SERVER['HTTP_HTTPS'] && !$_SERVER['HTTPS'])
{    unset($_SERVER['HTTP_HTTPS']);
}

答案4

您可以尝试这个来取消设置HTTP_HTTPS标题。

if(!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] != 'on') {
    unset($_SERVER['HTTP_HTTPS']);
}

相关内容