Gefälschte „.dev“-Domäne, die der Hosts-Datei zu Entwicklungszwecken hinzugefügt wurde, leitet in Chrome unter Windows auf HTTPS um, selbst wenn der lokale Entwicklungsserver nicht aktiv ist

Gefälschte „.dev“-Domäne, die der Hosts-Datei zu Entwicklungszwecken hinzugefügt wurde, leitet in Chrome unter Windows auf HTTPS um, selbst wenn der lokale Entwicklungsserver nicht aktiv ist

Ich baue einExpress.jsapp lokal. Um dies auf einem anderen Server als dem lokalen Host zu testen, habe ich meiner Hosts-Datei den folgenden Eintrag hinzugefügt:

127.0.0.1       mynewapp.dev

Ohne die App überhaupt zu starten, habe ich es versehentlich http://mynewapp.dev:3000in Chrome versucht (hier sollte die App laufen). Zu meiner Überraschung leitete mich Chrome zu weiter https://mynewapp.dev:3000.

Überschriften in der Browserkonsole zeigen:

Allgemein:

  • Anforderungs-URL:http://mynewapp.dev:3000/
  • Anforderungsmethode: GET
  • Statuscode: 307 Interne Weiterleitung
  • Referrer-Richtlinie: kein Referrer bei Downgrade

Antwortheader:

  • Standort:https://mynewapp.dev:3000/
  • Nicht maßgebender Grund: HSTS

Anforderungsheader:

  • Vorläufige Header werden angezeigt
  • Upgrade-Unsichere-Anfragen: 1
  • User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, wie
  • Gecko) Chrome/68.0.3440.106 Safari/537.36
  • X-DevTools-Emulate-Netzwerk-Bedingungen-Client-Id: 23A0CBD658A51DF4CA3B25A263078DA4

Wie ist das passiert?Ich habe keine Software, die die Anfrage umleitet, und meine App läuft nicht einmal!

Ich benutze:

  • Chrome Version 68.0.3440.106 (Offizieller Build) (64-Bit)
  • Windows 10 Enterprise

Dies geschieht jedoch nicht in:

  • Microsoft Edge 40.15063.674.0 (zeigt Fehlercode: INET_E_RESOURCE_NOT_FOUND)
  • IE 11 (zeigt Fehlercode: INET_E_RESOURCE_NOT_FOUND)

Um die Kommentare zu beantworten:

  • curl -I http://mynewapp.dev:3000bleibt hängen und zeigt nichts an.
  • Ich habe es auch versucht chrome://net-internals/#eventsund die Anfrage gefunden. Folgendes habe ich gesehen:

    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)
    
  • Habe den Host-Cache von gelöscht chrome://net-internals/#dns. Hat nicht funktioniert.
  • Alle Chrome-Erweiterungen gestoppt. Keine Verhaltensänderung.

Antwort1

Ab 2018 erzwingen Chrome und Firefox nun HSTS für die .devTop-Level-Domain.

Alserklärt in diesem Blogbeitrag, während Desktop-Entwickler schon seit fast Ewigkeiten lokale Umleitungen (über hosts) verwenden .dev, gibt es jetzt (Stand Mai 2018) offenbareine legitime .devgenerische Top-Level-Domain (gTLD)im Besitz von Google. Und es gibtdieses Chromium-Commit vom 4. Januar 2018, das ausdrücklich besagt:

Preload HSTS for the .dev gTLD.

Was für ein Spaß! Außerdem,seit Juli 2018 tut Firefox dies auch.

Die einfachste und praktischste Lösung – für alle, die HTTPS nicht für die lokale Entwicklung einrichten möchten – ist die Verwendung eines anderen Suffix wie .localhostoder sogar .localoder ehrlich gesagt irgendetwas auf der Welt wie *.foobarund so.

Kurz gesagt: Im Jahr 2018 *.devwird die Verwendung von Suffixen für die lokale Entwicklung vor allem zu unbeabsichtigtem Ärger und Verwirrung führen.

verwandte Informationen