Chrome ajoute un étrange HTTPS: 1 en-tête à toutes les demandes

19

J'ai eu beaucoup d'erreurs étranges sur les sites Web liés au HTTPS. Ces sites fonctionnent très bien dans FF et IE, mais ne se chargent pas dans Chrome. Il semble que, bien que je demande une URL non sécurisée (http), Google Chrome ajoute un en-tête supplémentaire HTTPS:1à la demande.

Cela provoque certains serveurs, probablement certains qui utilisent le déchargement SSL et fournissent un hébergement partagé, à répondre avec une erreur car il n'y a pas de SSL sur le serveur.

Je ne suis pas redirigé vers une page sécurisée (HTTPS), mais toutes les URL internes de la source sont modifiées en https.

J'ai vérifié la connexion avec le violoneux. Cette analyse n'est pas effectuée sur mon ordinateur et la seule différence est cet en- HTTPS:1tête.

J'ai créé une simple page PHP qui imprime la $_SERVERvariable. Lorsque je y accéder avec du chrome que je peux voir [HTTP_HTTPS] => 1. Je ne peux pas le voir avec FireFox.

J'ai essayé d'effacer toutes les données, de dissocier le chrome de mon compte Google, et de supprimer et d'installer Chrome à partir de zéro.

Quelqu'un a une idée à ce sujet? Ça me rend fou.

TwoDiv
la source
J'ai eu le même problème sur Chrome Canary, mais uniquement sur un site spécifique où je me suis amusé avec les redirections http-> https. Je suppose que cela a quelque chose à voir avec le cache de redirection 301. Chrome ne m'a pas redirigé vers https après l'effacement complet du cache du navigateur. Cependant, cela ne résout pas le problème d'en-tête https. Je l'ai "résolu" en n'utilisant plus de canari pour le site spécifique. Aujourd'hui, le même problème a recommencé sur Chrome stable MAIS PAS sur Canary plus. Je suppose que le cache sur les canaris est expiré. Je ne l'ai pas testé depuis un certain temps. Ça me semble totalement aléatoire. Désolé de ne pas vous avoir répondu. Mais, puisque je
Azeruel
Oui, je vois ça aussi, à partir d'hier. Me rendant fou aussi.
Kirby
Chrome est très, très agressif en matière de sécurité. Google le fait probablement pour des raisons commerciales: s'il ne peut pas sécuriser les données des utilisateurs contre les acteurs gouvernementaux, les utilisateurs perdront très rapidement confiance en Google. Par conséquent, Google considère comme un leader de la confidentialité sur Internet une priorité absolue, malgré le fait que son modèle commercial basé sur la publicité repose entièrement sur le suivi du comportement des utilisateurs. Les utilisateurs font confiance à Google pour être un gardien sûr de leurs données personnelles, pour ne pas divulguer des données à des tiers non autorisés, de sorte qu'ils ne peuvent pas se permettre de faire moins.
bwDraco

Réponses:

15

Il est fort probable que les sites avec lesquels vous rencontrez des problèmes exécutent du code serveur qui interprète incorrectement l'en- HTTPS: 1tête de la demande. Par exemple, le plugin Wordpress WooCommerce, qui s'exécute sur environ 900 000 sites , a un code de bogue qui gère incorrectement l'en- HTTPS: 1tête. Voir leur dernier document de patch ici: https://woocommerce.wordpress.com/2015/07/07/woocommerce-2-3-13-security-and-maintenance-release/

Il existe un article similaire sur StackOverflow: /programming/31565155/wordpress-woocommerce-forces-https-when-it-shouldnt/31570584#31570584

Pour donner plus de détails: Chrome a mis en œuvre la spécification Upgrade Insecure Requests du World Wide Web Consortium (W3C). La section 3.2.1 de cette spécification est le champ d'en-tête de demande HTTP Upgrade-Insecure-Requests qui indique

3.2.1. Le champ d'en-tête de demande HTTP Upgrade-Insecure-Requests

Le champ d'en-tête de demande HTTP Upgrade-Insecure-Requests envoie un signal au serveur exprimant la préférence du client pour une réponse chiffrée et authentifiée, et qu'il peut gérer avec succès la directive upgrade-insecure-requests afin de rendre cette préférence aussi transparente que possible fournir.

Cette préférence est représentée par l'ANBF suivant:

"Requêtes de mise à niveau non sécurisées:" * WSP "1" * WSP

Des sites comme ceux qui exécutent le plug-in WooCommerce dans Wordpress réécrivent incorrectement toutes les URL dans la réponse sous forme de https:\\liens si l'en- HTTPS: 1tête a été défini dans une demande non sécurisée (http).

En tant qu'utilisateur final de ce site, la seule solution simple consiste à utiliser un navigateur autre que Chrome jusqu'à ce que ces sites Web soient réparés.

Kirby
la source
Merci pour la réponse élaborée, j'ai vu que ce code a été implémenté, mais comme ce problème est spécifique à mon ordinateur (j'ai vérifié avec différents ordinateurs au bureau), je suppose qu'il existe un moyen de désactiver cela. Les autres ordinateurs n'envoient pas l'en-tête HTTPS: 1, il est spécifique à mon ordinateur
TwoDiv
1
Ce n'est pas spécifique à votre ordinateur. Je suppose que les autres utilisateurs n'ont pas encore mis à jour la dernière version de Chrome
Kirby
wow cela va être un gros problème potentiel pour WooCommerce. Je gère deux sites distincts (non compatibles https) sur Woo et je viens de les corriger avec le correctif qu'ils ont publié, mais je peux imaginer que beaucoup de propriétaires de magasins se plaignent de celui-ci!
lisburnite
Je pense que ce n'est pas seulement le problème de WooCommerce, mais plutôt la façon dont le serveur lit les en-têtes. Sur mon travail, nous utilisons SSL hors charge et nous utilisons le paramètre HTTP-Proto pour informer le serveur si la demande est arrivée en HTTPS. Le serveur reçoit une simple requête HTTP et l'analyse comme s'il s'agissait de HTTPS. Je suppose que c'est le même problème et si la configuration du serveur n'autorise pas HTTPS, n'a pas SSL ou utilise différents dossiers pour http et https - ils
planteront
3
@lisburnite vous exploitez des sites commerciaux qui ne sont pas servis via HTTPS? Vous devriez probablement protéger vos clients et résoudre ce problème ...
Ashley
3

c'est plus que du wocommerce, c'est tout du wordpress qui se détraque causant de mauvais css, images et etc.

ajoutez ceci près du haut de votre wp-config.php pour le supprimer

if($_SERVER['HTTP_HTTPS'] && !$_SERVER['HTTPS'])
{    unset($_SERVER['HTTP_HTTPS']);
}
Tout
la source
@ tout panneau d'administration ne fonctionnera pas.
Dhruv Kapatel
l'utiliser sur de nombreux sites Web qui ont cassé hier, sans problème
Any
1

Vous pouvez essayer ceci, pour annuler l'en- HTTP_HTTPStête.

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