2 votes

Le faux domaine ".dev" ajouté au fichier hosts à des fins de développement redirige vers HTTPS dans Chrome sous Windows, même si le serveur de développement local n'est pas actif.

Je suis en train de construire un Express.js l'application en local. Afin de tester cette application dans un endroit autre que localhost, j'ai ajouté l'entrée suivante à mon fichier hosts :

127.0.0.1       mynewapp.dev

Sans même démarrer l'application, j'ai accidentellement essayé http://mynewapp.dev:3000 (c'est là que je voulais que l'application s'exécute), dans Chrome. À ma grande surprise, Chrome m'a redirigé vers https://mynewapp.dev:3000 .

Les en-têtes s'affichent dans la console du navigateur :

Général :

  • URL de la demande : http://mynewapp.dev:3000/
  • Méthode de demande : GET
  • Code de statut : 307 Redirection interne
  • Politique de référence : no-referrer-when-downgrade

En-têtes de réponse :

  • Emplacement : https://mynewapp.dev:3000/
  • Non-Authoritative-Reason : HSTS

En-tête de la demande :

  • Les en-têtes provisoires sont indiqués
  • Demandes de mise à niveau non sécurisées : 1
  • User-Agent : Mozilla/5.0 (Windows NT 10.0 ; Win64 ; x64) AppleWebKit/537.36 (KHTML, like
  • Gecko) Chrome/68.0.3440.106 Safari/537.36
  • X-DevTools-Emulate-Network-Conditions-Client-Id : 23A0CBD658A51DF4CA3B25A263078DA4

Comment cela est-il arrivé ? Aucun logiciel ne redirige la requête, et mon application n'est même pas en cours d'exécution !

J'utilise :

  • Chrome Version 68.0.3440.106 (Official Build) (64 bits)
  • Windows 10 Enterprise

Cependant, cela ne se produit pas dans :

  • Microsoft Edge 40.15063.674.0 (Affiche le code d'erreur : INET_E_RESOURCE_NOT_FOUND)
  • IE 11 (Affiche le code d'erreur : INET_E_RESOURCE_NOT_FOUND)

Pour répondre aux commentaires :

  • curl -I http://mynewapp.dev:3000 reste bloqué et ne montre rien.

  • J'ai aussi essayé chrome://net-internals/#events et a trouvé la demande. Voici ce que j'ai vu :

    100382: URL_REQUEST
    http://mynewapp.dev:3000/
    Start Time: 2018-08-17 07:32:03.853
    
    t=16751 [st=   0] +REQUEST_ALIVE  [dt=1007]
                       --> priority = "HIGHEST"
                       --> url = "http://mynewapp.dev:3000/"
    t=16751 [st=   0]   +URL_REQUEST_DELEGATE  [dt=1]
    t=16751 [st=   0]      DELEGATE_INFO  [dt=1]
                           --> delegate_blocked_by = "extension AdBlock"
    t=16752 [st=   1]   -URL_REQUEST_DELEGATE
    t=16752 [st=   1]   +URL_REQUEST_START_JOB  [dt=6]
                         --> load_flags = 18432 (MAIN_FRAME_DEPRECATED | MAYBE_USER_GESTURE)
                         --> method = "GET"
                         --> url = "http://mynewapp.dev:3000/"
    t=16752 [st=   1]      URL_REQUEST_REDIRECT_JOB
                           --> reason = "HSTS"
    t=16752 [st=   1]      URL_REQUEST_FAKE_RESPONSE_HEADERS_CREATED
                           --> HTTP/1.1 307 Internal Redirect
                               Location: https://mynewapp.dev:3000/
                               Non-Authoritative-Reason: HSTS
    t=16752 [st=   1]     +URL_REQUEST_DELEGATE  [dt=6]
    t=16752 [st=   1]        DELEGATE_INFO  [dt=6]
                             --> delegate_blocked_by = "MojoAsyncResourceHandler"
    t=16758 [st=   7]     -URL_REQUEST_DELEGATE
    t=16758 [st=   7]      URL_REQUEST_REDIRECTED
                           --> location = "https://mynewapp.dev:3000/"
    t=16758 [st=   7]   -URL_REQUEST_START_JOB
    t=16758 [st=   7]   +URL_REQUEST_DELEGATE  [dt=0]
    t=16758 [st=   7]      DELEGATE_INFO  [dt=0]
                           --> delegate_blocked_by = "extension AdBlock"
    t=16758 [st=   7]   -URL_REQUEST_DELEGATE
    t=16758 [st=   7]   +URL_REQUEST_START_JOB  [dt=1000]
                         --> load_flags = 18432 (MAIN_FRAME_DEPRECATED | MAYBE_USER_GESTURE)
                         --> method = "GET"
                         --> url = "https://mynewapp.dev:3000/"
    t=16759 [st=   8]      URL_REQUEST_DELEGATE  [dt=0]
    t=16759 [st=   8]      HTTP_CACHE_GET_BACKEND  [dt=0]
    t=16759 [st=   8]      HTTP_CACHE_OPEN_ENTRY  [dt=0]
                           --> net_error = -2 (ERR_FAILED)
    t=16759 [st=   8]      HTTP_CACHE_CREATE_ENTRY  [dt=0]
    t=16759 [st=   8]      HTTP_CACHE_ADD_TO_ENTRY  [dt=0]
    t=16759 [st=   8]     +HTTP_STREAM_REQUEST  [dt=999]
    t=16759 [st=   8]        HTTP_STREAM_JOB_CONTROLLER_BOUND
                             --> source_dependency = 100392 (HTTP_STREAM_JOB_CONTROLLER)
    t=17758 [st=1007]        HTTP_STREAM_REQUEST_BOUND_TO_JOB
                             --> source_dependency = 100393 (HTTP_STREAM_JOB)
    t=17758 [st=1007]     -HTTP_STREAM_REQUEST
    t=17758 [st=1007]   -URL_REQUEST_START_JOB
                         --> net_error = -102 (ERR_CONNECTION_REFUSED)
    t=17758 [st=1007]    URL_REQUEST_DELEGATE  [dt=0]
    t=17758 [st=1007] -REQUEST_ALIVE
                       --> net_error = -102 (ERR_CONNECTION_REFUSED)
  • Effacement du cache de l'hôte de chrome://net-internals/#dns . N'a pas fonctionné.

  • J'ai arrêté toutes les extensions de Chrome. Aucun changement de comportement.

6voto

Giacomo1968 Points 48326

À partir de 2018, Chrome et Firefox imposent désormais le HSTS pour l' .dev domaine de premier niveau.

Comme expliqué dans cet article de blog tandis que les développeurs d'ordinateurs de bureau ont utilisé une redirection locale (par l'intermédiaire de hosts ) .dev depuis presque toujours, il y a apparemment maintenant (en mai 2018) a légitime .dev domaine générique de premier niveau (gTLD) appartenant à Google. Et il y a ce Chromium commit du 4 janvier 2018 qui indique explicitement . :

Preload HSTS for the .dev gTLD.

Quel plaisir ! En outre, Depuis juillet 2018, Firefox le fait également .

La solution la plus simple et la plus pratique - pour tous ceux qui ne veulent pas configurer HTTPS pour le développement local - est d'utiliser un autre suffixe tel que .localhost ou même .local ou honnêtement n'importe quoi dans le monde tel que *.foobar et autres.

Mais l'essentiel est qu'en 2018, utiliser *.dev pour le développement local ne fera que causer plus de maux de tête et de confusion par inadvertance qu'autre chose.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X