Chrome добавляет странный заголовок HTTPS: 1 ко всем запросам

19

Я получаю много странных ошибок на веб-сайтах, связанных с HTTPS. Эти сайты прекрасно работают в FF и IE, но не загружаются в Chrome. Похоже, что хотя я запрашиваю незащищенный URL (http), Google Chrome добавляет дополнительный заголовок HTTPS:1к запросу.

Это приводит к тому, что некоторые серверы, возможно, те, которые используют разгрузку SSL и предоставляют общий хостинг, отвечают с ошибкой, поскольку на сервере нет SSL.

Я не перенаправлен на защищенную страницу (HTTPS), скорее все внутренние URL-адреса в источнике редактируются в https.

Я проверил соединение с Fiddler. Этот анализ не выполняется на моем компьютере, и единственным отличием является этот HTTPS:1заголовок.

Я создал простую страницу PHP, которая печатает $_SERVERпеременную. Когда я к нему доступ с хромом я вижу: [HTTP_HTTPS] => 1. Я не могу видеть это с FireFox.

Я попытался очистить все данные, отключить Chrome из своей учетной записи Google, а также удалить и установить Chrome с нуля.

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

TwoDiv
источник
У меня была такая же проблема с Chrome Canary, но только на конкретном сайте, где я дурачился с перенаправлениями http-> https. Я думаю, это как-то связано с 301 кешем перенаправления. Chrome не перенаправил меня на https после полной очистки кэша браузера. Однако это не решает проблему заголовка https. Я «решил» это, больше не используя канарейку для конкретного сайта. Сегодня та же самая проблема снова началась на хромированной стабильной НО НЕ на канарейке больше. Я предполагаю, что тайник на канарейке истек. Я не проверял это в течение некоторого времени. Выглядит совершенно случайно для меня. Извините, что не дал вам ответ. Но, так как я
Азеруэль
Да, я тоже это вижу, начиная со вчерашнего дня. Сводит меня с ума тоже.
Кирби
Chrome очень, очень агрессивен, когда дело доходит до безопасности. Google, вероятно, делает это по деловым причинам: если он не может защитить пользовательские данные от правительственных субъектов, пользователи очень быстро потеряют свою веру в Google. Таким образом, Google считает первоочередной задачей стать лидером в области конфиденциальности в Интернете, несмотря на то, что его бизнес-модель, основанная на рекламе, полностью основана на отслеживании поведения пользователей. Пользователи доверяют Google быть надежным хранителем своих персональных данных, не допускать утечки данных посторонним лицам, поэтому они не могут позволить себе делать что-то меньшее.
bwDraco - Восстановить Монику

Ответы:

15

Скорее всего, на тех сайтах, с которыми у вас проблемы, работает серверный код, который неправильно интерпретирует HTTPS: 1заголовок запроса. Например, плагин Wordpress WooCommerce, работающий на около 900 000 сайтов , содержит ошибочный код, который неправильно обрабатывает HTTPS: 1заголовок. Смотрите их последний патч здесь: https://woocommerce.wordpress.com/2015/07/07/woocommerce-2-3-13-security-and-maintenance-release/

Похожий пост есть в StackOverflow: /programming/31565155/wordpress-woocommerce-forces-https-when-it-shouldnt/31570584#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, до тех пор, пока эти сайты не будут отремонтированы.

Kirby
источник
Спасибо за подробный ответ, я видел, что этот код был реализован, но, поскольку эта проблема характерна для моего компьютера (я проверил на разных компьютерах в офисе), я предполагаю, что есть способ отключить это. Другие компьютеры не отправляют заголовок HTTPS: 1, он специфичен для моего компьютера
TwoDiv
1
Это не относится к вашему компьютеру. Я предполагаю, что другие пользователи еще не обновились до последней версии Chrome
Kirby
вау это будет потенциально большой проблемой для WooCommerce. Я управляю двумя отдельными сайтами (не поддерживающими https) на Woo и только что исправил их с помощью выпущенного исправления, однако я могу представить, что многие владельцы магазинов жалуются на это!
Лисбурнит
Я думаю, что это не только проблема WooCommerce, а скорее то, как Сервер читает заголовки. В своей работе мы используем SSL без нагрузки и параметр HTTP-Proto, чтобы сервер знал, поступил ли запрос в HTTPS. Сервер получает простой HTTP-запрос и анализирует его, как если бы он был HTTPS. Я предполагаю, что это та же самая проблема, и если конфигурация сервера не позволяет HTTPS, не имеет SSL или использует разные папки для http и https - они
вылетят
3
@lisburnite Вы используете коммерческие сайты, которые не обслуживаются по HTTPS? Вы, вероятно, должны дать своим клиентам некоторую защиту и исправить это ...
Эшли
3

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

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

if($_SERVER['HTTP_HTTPS'] && !$_SERVER['HTTPS'])
{    unset($_SERVER['HTTP_HTTPS']);
}
Любые
источник
@ любая тогда админка не сработает.
Дхрув Капатель
используя его на многих сайтах, которые вчера сломались, без проблем
Any
1

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

if(!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] != 'on') {
    unset($_SERVER['HTTP_HTTPS']);
}
Алей
источник