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 с нуля.

У кого-нибудь есть идеи по этому поводу? Это сводит меня с ума.

4 ответа

Решение

Видимо ошибка в версии 44, кажется, исправлена ​​в последнем обновлении. Я сейчас использую 44.0.2403.107 и проблема, похоже, ушла.

Более подробная информация здесь: http://www.zdnet.com/article/brand-new-chrome-44-release-added-a-bug/

Скорее всего, на тех сайтах, с которыми у вас возникают проблемы, работает серверный код, который неправильно интерпретирует HTTPS: 1 заголовок запроса. Например, плагин Wordpress WooCommerce, работающий на около 900000 сайтов, содержит ошибочный код, который неправильно обрабатывает 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

Более подробно: в Chrome реализована спецификация обновлений небезопасных запросов от Консорциума World Wide Web (W3C). Раздел 3.2.1 этой спецификации - поле заголовка HTTP-запроса Upgrade-Insecure-Requests, в котором указано

3.2.1. Поле заголовка HTTP-запроса Upgrade-Insecure-Requests

Поле заголовка HTTP-запроса Upgrade-Insecure-Requests отправляет серверу сигнал, выражающий предпочтение клиента для зашифрованного и аутентифицированного ответа, и что он может успешно обработать директиву upgrade-insecure-запросы, чтобы сделать это предпочтение максимально бесшовным предоставлять.

Это предпочтение представлено следующим ANBF:

"Upgrade-Insecure-Requests:" * WSP "1" * WSP

Сайты, подобные тем, на которых работает плагин WooCommerce в Wordpress, неправильно переписывают все URL-адреса в ответе как https:\\ ссылки, если HTTPS: 1 заголовок был установлен в незащищенном (http) запросе.

Для конечного пользователя этого сайта единственное простое решение - использовать браузер, отличный от Chrome, до тех пор, пока эти сайты не будут отремонтированы.

Это больше, чем просто коммерция, все WordPress, который становится беспорядочным, вызывая плохие CSS, изображения и т. д.

добавьте это в верхнюю часть вашего wp-config.php, чтобы удалить его

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

Вы можете попробовать это, чтобы сбросить HTTP_HTTPS заголовок.

if(!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] != 'on') {
    unset($_SERVER['HTTP_HTTPS']);
}
Другие вопросы по тегам