Chrome将奇怪的HTTPS:1标头添加到所有请求


19

在与HTTPS相关的网站上,我收到了很多奇怪的错误。这些网站在FF和IE中效果很好,但无法在Chrome中加载。看来,尽管我请求的是不安全的URL(http),但Google Chrome浏览器HTTPS:1在请求中添加了额外的标头。

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

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

我检查了与提琴手的联系。我的计算机上没有进行此解析,唯一的区别是此HTTPS:1标头。

我创建了一个简单的PHP页面,用于打印$_SERVER变量。当我使用chrome浏览时,我会看到:[HTTP_HTTPS] => 1。我无法通过FireFox看到它。

我尝试清除所有数据,从我的Google帐户中取消配对Chrome,并从头开始删除并安装Chrome。

有人对此有任何想法吗?这让我发疯。


我在chrome canary上遇到过相同的问题,但仅在我用http-> https重定向愚弄的特定站点上。我想这与301重定向缓存有关。清除完整的浏览器缓存后,Chrome并未将我重定向到https。但是,它不能解决https标头问题。我通过不再针对特定站点使用金丝雀来“解决”它。今天,相同的问题再次在镀铬稳定但不再在金丝雀上开始了。我猜金丝雀的缓存已过期。我已经有一段时间没有测试了。对我来说看起来完全是随机的。很抱歉没有给您答案。但是,自从我
阿塞勒尔

是的,我也看到了,从昨天开始。我也快疯了
柯比

Chrome在安全性方面非常非常积极。Google可能出于商业原因这样做:如果它无法针对政府行为者保护用户数据,则用户将很快失去对Google的信任。因此,尽管Google基于广告的商业模式完全依赖于用户行为跟踪,但Google仍将自己确立为互联网隐私领导者的重中之重。用户相信Google是安全的个人数据管理员,不会将数据泄露给未经授权的第三方,因此他们无能为力。
bwDraco-恢复莫妮卡2015年

Answers:


15

您遇到问题的那些站点很可能正在运行错误解释HTTPS: 1请求标头的服务器代码。例如,运行在大约900,000个站点上的Wordpress WooCommerce插件具有错误地处理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 Request Header”字段,该字段指出

3.2.1。升级不安全请求HTTP请求标头字段

Upgrade-Insecure-Requests HTTP请求标头字段将信号发送到服务器,以表示客户端对加密和经过身份验证的响应的首选项,并且它可以成功处理upgrade-insecure-requests指令,以使该首选项尽可能无缝提供。

此首选项由以下ANBF表示:

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

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

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


感谢您的详尽答复,我已经看到该代码已实现,但是由于此问题是我的计算机特有的(我检查过办公室中的其他计算机),因此我认为有办法将其关闭。其他计算机未发送HTTPS:1标头,它专用于我的计算机
TwoDiv

1
它不特定于您的计算机。我猜想其他用户尚未更新到最新版本的chrome
Kirby 2015年

哇,这对WooCommerce来说可能是一个大问题。我在Woo上运行了两个单独的网站(未启用https),并使用他们发布的修复程序对其进行了修补,但是我可以想象很多店主对此抱怨!
lisburnite

我认为这不仅是WooCommerce问题,而是服务器读取标头的方式。在我的工作中,我们使用Off-load SSL,并且使用HTTP-Proto参数让服务器知道请求是否以HTTPS到达。服务器获得一个简单的HTTP请求,并将其解析为HTTPS。我认为这是相同的问题,如果服务器配置不允许HTTPS,没有SSL或对HTTP和HTTP使用不同的文件夹-它们将崩溃
TwoDiv

3
@lisburnite您正在运营未通过HTTPS服务的商业网站?您可能应该给客户一些保护并加以解决……
Ashley


3

它不仅是电子商务,它的所有wordpress都在混乱中,导致不良的CSS,图像等。

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

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

@任何则管理面板将无法工作。
Dhruv Kapatel 2015年

在昨天
2015年

1

您可以尝试这样做,以取消设置HTTP_HTTPS标题。

if(!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] != 'on') {
    unset($_SERVER['HTTP_HTTPS']);
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.