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']);
}