Google Chrome leitet localhost zu https um

362

Wenn ich ein Visual Studio-Projekt mit Chrome debugge, versucht der Browser, auf das https-Äquivalent meiner Webadresse umzuleiten. Ich habe kein SSL im Webprojekt aktiviert und die Start-URL ist die http-URL. Beim Debuggen mit FireFox oder IE tritt dieses Problem nicht auf.

Ich habe Chrome neu installiert, wodurch das Problem für einen Tag behoben wurde. Ohne Addons herunterzuladen, trat das Problem am nächsten Tag erneut auf.

Was bringt Chrome dazu, localhost auf https umzuleiten?

Network Inspect zeigt: Anforderungs-URL: Daten: text / html, chromewebdata Anforderungsheader Vorläufige Header werden angezeigt User-Agent: Mozilla / 5.0 (Windows NT 6.3; WOW64) AppleWebKit / 537.36 (KHTML, wie Gecko) Chrome / 36.0.1985.143 Safari / 537,36

Keine Vorschau und keine Antwortdaten in diesen Registerkarten.

Brett Mathe
quelle
Was zeigt Network Inspector?
c69
4
Die Netzwerkinspektion zeigt überhaupt nicht viel. Ich kann nicht einmal die angeforderte URL sehen. Anforderungs-URL: Daten: Text / HTML, Chromeweb-Daten Anforderungsheader Vorläufige Header werden angezeigt. Cache-Steuerung: Kein Cache Pragma: Kein Cache Benutzer-Agent: Mozilla / 5.0 (Windows NT 6.3; WOW64) AppleWebKit / 537.36 (KHTML, wie Gecko ) Chrome / 36.0.1985.143 Safari / 537.36
Brett Mathe
CHROM 63: Scrollen Sie weiter, um Antworten zu erhalten
nordamerikanischer
Durch die Neuinstallation meines Chrome werden alle Probleme gelöst. Jetzt meine .dev und nicht mehr auf https umleiten. Ich wünschte, ich hätte das früher versucht .. so viel Zeit verschwendet ..
Taj Khan
10
Jeder, der in letzter Zeit dieses Problem hat und versucht, es .devals Ihren lokalen Doman zu verwenden, ist ein ganz neues Problem, daher denke ich, dass keine dieser Antworten mehr funktioniert. Ab Chrome 63 ... "Chrome zwingt .dev-Domains über vorinstalliertes HSTS zu HTTPS". Also keine selbstsignierten SSL-Zertifikate mehr. Anscheinend ist .dev eine echte Domain. Wer wusste.
Trevor

Antworten:

591

Ich glaube, dies wird durch HSTS verursacht - siehe http://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security

Wenn Sie andere Localhost-Sites entwickelt haben, die einen HSTS-Header senden ...

z.B. Strikte Transportsicherheit: maximales Alter = 31536000; includeSubDomains; Vorspannung

... dann müssen abhängig vom Wert des Höchstalters zukünftige Anfragen an localhost über HTTPS bearbeitet werden.

Um dies zu umgehen, habe ich Folgendes getan.

  • Geben Sie in die Chrome-Adressleiste "chrome: // net-internals / # hsts" ein.
  • Ganz unten auf einer Seite befindet sich das Textfeld QUERY-Domain. Stellen Sie sicher, dass localhost dem Browser bekannt ist. Wenn "Nicht gefunden" angezeigt wird, ist dies nicht die Antwort, nach der Sie suchen.
  • Wenn dies der Fall ist, LÖSCHEN Sie die localhost-Domäne mithilfe des obigen Textfelds
  • Ihre Site sollte jetzt mit einfachem altem HTTP funktionieren

Dies ist keine dauerhafte Lösung, wird sie aber zumindest zwischen den Projekten zum Laufen bringen. Wenn jemand weiß, wie man localhost dauerhaft von der HSTS-Liste ausschließt, lass es mich wissen :)

UPDATE - November 2017

Chrome hat diese Einstellung kürzlich so verschoben, dass sie unter " Sicherheitsrichtlinien für Domänen löschen" angezeigt wird

Geben Sie hier die Bildbeschreibung ein

UPDATE - Dezember 2017 Wenn Sie die .dev-Domain verwenden, sehen Sie andere Antworten unten, da Chrome (und andere) HTTPS über vorinstalliertes HSTS erzwingen.

Großer Sprung
quelle
6
So frustrierend. Aber so froh, die Ursache gefunden zu haben.
Zapnologica
21
Ich habe versucht, nach "localhost" abzufragen, aber es heißt Nicht gefunden
Chin
2
Ich weiß, dass dies ein alter Beitrag ist, aber eine Idee, wie man ihn lösen kann, wenn bei der Abfrage von localhost gemäß der akzeptierten Antwort "nicht gefunden" zurückgegeben wird? Versuchte alles in allen Kommentaren und Antworten hier.
DarkW1nter
28
Dies ist totaler Müll von Chrome. Wie erwarten sie, dass wir lokal entwickeln, wenn sie Sie willkürlich dazu zwingen, HTTPS auf Ihrem verdammten lokalen Host auszuführen? Ich habe seit Monaten alles in Ordnung benutzt, ich melde mich eines Morgens an und bekomme diesen Mist zu erledigen. Keine dieser "Korrekturen" funktioniert für mich.
Alison
50
Wenn Ihre localhost-Domain ist, .dev funktioniert dies meiner Meinung nach @Alison nicht, da seit der letzten Version von Version 63 ... "Chrome, um .dev-Domains über vorinstalliertes HSTS zu HTTPS zu zwingen". Daher funktioniert .dev im Grunde genommen überhaupt nicht mehr, es sei denn, Sie haben ein ordnungsgemäß signiertes SSL-Zertifikat. Keine selbstsignierten Zertifikate mehr erlaubt. Weitere Details .
Trevor
308

Ich hatte das gleiche Problem in Chrome und habe erfolglos versucht, die BigJump-Lösung zu verwenden .

Ich habe mein Problem behoben, indem ich eine harte Aktualisierung erzwungen habe , wie in diesem Blog gezeigt (ursprünglich aus dieser SuperUser-Antwort ).

Stellen Sie sicher, dass Ihre Adressleiste das http-Schema verwendet, und führen Sie die folgenden Schritte möglicherweise einige Male aus:

  1. Öffnen Sie das Developer Tools-Bedienfeld (STRG + UMSCHALT + I).
  2. Klicken und halten Sie das Reload-Symbol und klicken Sie mit der rechten Maustaste auf das Reload-Symbol.
  3. Ein Menü wird geöffnet.
  4. Wählen Sie die 3. Option aus diesem Menü ("Cache leeren und Hard Reload")
Adiyat Mubarak
quelle
3
Sie können auch mit der rechten Maustaste auf das Symbol zum Aktualisieren / Neuladen klicken, um zum Menü Hard Reload zu gelangen
avjaarsveld
3
Ich kann diese Lösung nicht zum Laufen bringen. Das Problem ist, dass es einen harten Reload auf localhost macht: 3000 (in meinem Fall). Der Versuch, das Protokoll vor dem Neuladen zu ändern, funktioniert jedoch nicht.
John_omalley
1
Vielen Dank!!! Dadurch wird der ursprüngliche localhost: port wiederhergestellt, wenn Sie Ihre startup.cs damit durcheinander gebracht haben ... var options = new RewriteOptions (). AddRedirectToHttpsPermanent (); app.UseRewriter (Optionen); }
Hubert17
Arbeitete für mich durch Drücken von "STRG + UMSCHALT + R" für ein hartes Nachladen.
LP. Gonçalves
Auf Chrom ist es F12 und nicht STRG + UMSCHALT + I
Champ
190

NEUE ENTWICKLUNGEN! (wenn Sie Chrome 63+ haben)

Wenn Ihre localhost-Domain lautet .dev, gelten die zuvor akzeptierten und funktionierenden Antworten meines Erachtens nicht mehr. Dies liegt daran, dass Chrome ab Chrome 63 .dev-Domains über vorinstalliertes HSTS zu HTTPS zwingt.

Dies bedeutet, dass es im .devGrunde genommen überhaupt nicht mehr funktioniert, wenn Sie nicht über ein ordnungsgemäß signiertes SSL-Zertifikat verfügen - keine selbstsignierten Zertifikate mehr zulässig! Erfahren Sie mehr in diesem Blog-Beitrag.

Es wird daher .testempfohlen, dieses Problem jetzt zu beheben und zu verhindern, dass es in Zukunft erneut auftritt, da es von der IETF für Test- / Entwicklungszwecke reserviert wird. Sie sollten auch in der Lage sein, .localhostfür lokale Entwickler zu verwenden.

Trevor
quelle
2
Ich habe alle .dev-Domains in .app geändert, immer noch das gleiche Problem. Irgendwelche Hinweise auf das Problem?
Jeff
5
@ Jeff versuchen mit.test
Vitalii Zurian
18
Das ist EXTREM nervig. Sicherlich muss es eine Möglichkeit geben, uns nicht zu zwingen, unsere Entwicklungsdomäne zu ändern, oder?
Emanuele Ciriachi
5
Ersetzen .devdurch .testarbeitete auch für mich in Chrome 63
Lekhnath
12
Diese kontraintuitiven Standardeinstellungen sind schrecklich. Warum sollte man Zeit verlieren, wenn man das Setup seiner Entwicklungsumgebung debuggt oder nur errät, was falsch läuft, um festzustellen, dass alles in Ordnung ist und Google Chrome standardmäßig .dev zu HTTPS umleitet. Wo ist die Logik? Warum .dev und warum nicht andere TLDs? Absolut nicht intuitiv.
Meglio
50

Huckepack von Adiyat Mubarak

Konnte nicht hart aktualisiert werden, da es nur auf https aktualisiert wurde. Befolgen Sie einige der gleichen Schritte.

1. Open chrome developer tools (ctrl + shift + i)
2. Network Tab at the top
3. Click Disable cache checkbox at the top (right under network tab for me).
4. Refresh page (while the developer tools is still open)
Steven Johnston
quelle
Ich bin zum zweiten Mal hier, um die Lösung zu finden. Danke vielmals.
Čamo
1
Ich verwende eine .local-Domain und dies hat funktioniert, als die oben genannte HSTS-Lösung dies nicht tat.
Diego Salazar
Dies ist das einzige, was für mich funktioniert hat, nachdem ich die Lösungen von BigJump und Adiyat Mubarak ausprobiert habe.
Alek Arsovski
Das Deaktivieren des Caches war auch für mich notwendig. Dieses Problem trat bei mir auf, nachdem ich Fiddler heruntergefahren hatte.
CounterFlame
47

Ich habe das gleiche Problem, aber nur in Chrome Canary und suche nach einer Lösung. Ich habe diesen Beitrag gefunden .

In einer der nächsten Versionen von Chrome werden alle auf .dev (und .foo) endenden Domains gezwungen, über einen vorinstallierten HSTS-Header (HTTP Strict Transport Security) an HTTPs umgeleitet zu werden.

{ "name": "dev", "include_subdomains": true, "mode": "force-https" },
{ "name": "foo", "include_subdomains": true, "mode": "force-https" },

Ändern Sie also Ihre Domains.

Rafawhs
quelle
2
Das ist das Problem, das ich hier lösen wollte. Mann, jetzt muss ich mir eine andere Fälschung für meine lokalen Entwickler-Sites
einfallen lassen
2
Von dem Wiki , .localklingt ein bisschen spröde, wenn auch ich , es ist sicherer als andere TLDs erraten. Ich .localhostziehe auch die Verwendung von coz zurück, da Chrome anscheinend eine native Umleitung durchführt, die zu verhindern scheint, dass mein rproxy funktioniert. .testscheint am sichersten zu sein, obwohl es aufgrund von Namespace-Konflikten mit all den in TDD / .test()Methoden usw. verwendeten Zeichenfolgen klobig ist
Dwelle
8
Ich habe einen Tag verloren. Vielen Dank
Tonio
17
Verdammt, gerade auf Chrome 63 aktualisiert und jetzt betrifft mich das für .dev. WTF. Es ist mir egal, ob es sich um eine gültige TLD handelt oder nicht, wenn ich meine Site nicht mit SSL benötige oder möchte oder habe, dann zwinge sie mir nicht auf.
Dbinott
6
Wow das macht mich wütend In einigen Entwicklungsumgebungen ist es nicht so einfach, nur das tld zu ändern. Ich schaue mir jetzt Arbeitsstunden an, um dies für das zu ändern, woran ich arbeite. Es ist nicht wirklich ihre Sache, was ich für die Entwicklung verwenden möchte.
Brett Thomas
18

Chrome 63 (seit Dezember 2017 verfügbar) erzwingt, dass alle auf .dev (und .foo) endenden Domains über einen vorinstallierten HSTS-Header (HTTP Strict Transport Security) an HTTPS umgeleitet werden. Weitere Informationen hierzu finden Sie hier.

Tai Ho
quelle
2
^^ Ditto. Es hat auch unsere .appDomains in der letzten Woche betroffen . Wir wechseln vorübergehend zu, .testobwohl ich nicht denke, dass dies eine langfristige Lösung ist.
Russellmania
13

von https://galaxyinternet.us/google-chrome-redirects-localhost-to-https-fix/

Keine der Optionskorrekturen hat bei mir funktioniert, um sie zu reparieren https://localhost:3000 hat dies funktioniert.

Klicken und halten Sie die ReloadTaste und wählen Sie Empty Cache and Hard Reload, dies scheint nur eine Option zu seinlocalhost

user2167582
quelle
das funktioniert bei mir nicht. Gibt es eine andere Lösung?
Raju Paladiya
Das neueste Chrome wurde aktualisiert, sodass diese Lösung nicht mehr funktioniert.
user2167582
1
Dies sollte auf allen Domänen funktionieren, wenn Sie die Entwickler-Symbolleiste geöffnet haben
Hussam
7

Ich habe auch mit diesem Problem zu kämpfen. Scheint, dass HSTS nur für Domain-Namen gedacht ist . Wenn Sie also auf einem lokalen Computer entwickeln, ist es viel einfacher, die IP-Adresse zu verwenden. Also wechselte ich von localhost zu 127.0.0.1

siim
quelle
Das ist in Ordnung, aber ist es möglich sicherzustellen, dass bei jeder Eingabe von localhost die Wörter localhost durch 127.0.0.1 ersetzt werden?
Simon
Vielen Dank
Hedha
6

Ich habe die Ursache des Problems nie herausgefunden, konnte dieses Problem jedoch beheben. Ich habe den Google Chrome-App-Cache-Ordner gelöscht, wodurch das Problem behoben wurde.

C: \ Benutzer [Benutzer] \ AppData \ Local \ Google \ Chrome

Brett Mathe
quelle
1
Haben Sie den gesamten Browserverlauf oder die Passwörter verloren?
Zapnologica
7
Ich glaube, das Problem ist, dass Chrome speichert, wenn Sie eine Domain mit HTTPS besuchen. Wenn Sie dann jemals wieder dieselbe Domain besuchen, wird automatisch auf HTTPS umgeschaltet. Als Entwickler ist das ein Ärgernis, denn sobald Sie mit HTTPS auf eine Localhost-Site zugreifen, werden plötzlich alle Locahost-Sites zu HTTPS umgeleitet.
Dale K
1
@ DaleBurrell Du hast nicht recht. Dies wird durch HSTS verursacht: en.wikipedia.org/wiki/HTTP_Strict_Transport_Security
langpavel
6

Dies kann durch eine zwischengespeicherte https-Umleitung verursacht und durch manuelles Löschen des Caches wie in der Antwort von Adiyat Mubarak behoben werden.

Wenn Sie localhost besuchen, sind Sie wahrscheinlich ein Entwickler. In diesem Fall finden Sie eine Chrome-Erweiterung zum Löschen des Cache wie "klassischer Cache-Killer" (siehe z. B. https://chrome.google.com/webstore/search/classic%20cache) % 20killer? Hl = de ) nützlich in einer Vielzahl von Situationen und wahrscheinlich bereits installiert.

Die schnelle Lösung lautet also: Installieren Sie einen Cache-Killer (falls Sie noch keinen haben), schalten Sie ihn ein und laden Sie die Seite neu. Erledigt!

CalderBot
quelle
Dies
behebt
6

Eine faule und schnelle Lösung für faule Leute wie mich (arbeiten in Chrome 67).

Starten Sie einfach ein anderes Chrome-Fenster im Stealth-Modus mit der Option "Inkognito-Fenster" (STRG + UMSCHALT + N). Sie müssen den Cache nicht löschen, müssen nicht in tiefe Chrome-Einstellungen eintauchen usw.

spekdrum
quelle
1
Ich hatte Probleme mit den anderen Vorschlägen - möglicherweise, weil mehrere verschiedene Webseiten gleichzeitig geöffnet sein mussten, alle auf derselben Domain, aber auf verschiedenen Servern, wobei einige dieser Webserver https verwendeten, andere nur http. Über nichts anderes funktioniert als das "Inkognito-Fenster"!
Klaws
Dies funktioniert, aber meine AJAX-Anforderungen werden aufgrund vorläufiger Header extrem langsam.
Zweige
5

Nichts davon hat bei mir funktioniert. Dies geschah nach einem Chrome-Update (Version 63.0.3239.84, Linux) mit einer lokalen URL. Würde immer zu https umleiten, egal was passiert. Ich habe einige Stunden und viel Geduld verloren

Was schließlich funktionierte, war nur das Ändern der Domain.

Für das, was es wert ist, war die Domain .app. Vielleicht hat es etwas zu tun? Und habe es einfach in .test geändert und Chrome hat aufgehört, es umzuleiten

diogo.abdalla
quelle
5

Wie ich dieses Problem mit Chrom 79 gelöst habe:

Fügen Sie einfach diese URL in Ihre Suche ein. Chrome: // flags / # allow-unsicher-localhost

Es hat mir geholfen, indem ich experimentelle Funktionen verwendet habe.

Ivan Efremov
quelle
3

Leider hat mir keine der hier aufgeführten Lösungen geholfen, dieses Problem zu beheben. Ich habe dieses Problem behoben, indem ich http://127.0.0.1 (IP-Adresse) anstelle von http: // localhost verwendet habe . Ein schneller kleiner Hack, um mit der Winkelentwicklung mit dem Chrome-Browser zu arbeiten.

Venkatesh Muniyandi
quelle
1

In meinem Fall hatte ich meinen Projektpfad als festgelegt /Users/me/dev/project_root/und führte den nodeJS/ expressserver von dort aus aus. Durch Umbenennen meines Pfads in /Users/me/project_root(Entfernen devvom Pfad zum Projekt) wurde das Problem behoben.

Hat höchstwahrscheinlich mit dieser neuen Regelung zu tun:

Chrome 63 (seit Dezember 2017 verfügbar) erzwingt, dass alle auf .dev (und .foo) endenden Domains über einen vorinstallierten HSTS-Header (HTTP Strict Transport Security) an HTTPS umgeleitet werden.

Weitere Informationen hierzu finden Sie hier .

Verwenden von:

  • Google Chrome Version 70.0.3538.110 (offizieller Build) (64-Bit)
  • nodeJS v9.2.0
Kobbi Gal
quelle
1

Eine einfache Lösung besteht darin, Ihre /etc/hostsDatei zu bearbeiten und einen Alias ​​pro Projekt einzurichten.

127.0.0.1   project1 project2 project3

Diese domänenlosen Namen haben niemals das Problem mit HSTS, es sei denn, Sie senden die von @bigjump erwähnte HSTS-Antwort und haben den zusätzlichen Vorteil, dass Sie Ihre Anmeldesitzung beibehalten, wenn Sie zwischen Projekten hin und her wechseln.

Bootscodierer
quelle
0

Gehen Sie zu den Einstellungen in Chrome und dann zu Erweiterte Einstellungen. Klicken Sie im Abschnitt Datenschutz und Sicherheit auf Browserdaten löschen und dann alle Daten löschen. Ich habe diese Schritte befolgt und es hat bei mir funktioniert. Hoffe es hilft jemandem.

user9143776
quelle
0

Chrome 63 zwingt .dev-Domains über vorinstalliertes HSTS automatisch zu HTTPS.
Schnellkorrektur: Ändern Sie einfach die .dev-Domänen in .localhost.

Wouter Schoofs
quelle
0

Dies ist keine Lösung, sondern nur eine Problemumgehung.

  1. Klicken Sie im Solution Explorer auf Ihr Visual Studio-Projekt (oberste Ebene) und wechseln Sie zum Eigenschaftenfenster.

  2. Ändern Sie SSL Enabled in true. Im Eigenschaftenfenster wird nun eine andere Portnummer als "SSL-URL" angezeigt.

  3. Wenn Sie jetzt Ihre Anwendung ausführen (oder im Browser anzeigen), müssen Sie die Portnummer manuell in die SSL-Portnummer in der Adressleiste ändern.

Jetzt funktioniert es gut als SSL-Link

Arunabh Mukherjee
quelle
0

Öffnen Chrome Developer Tools-> gehen Sie zu Network-> wählen Sie Disable Cache-> neu laden

Ben Bieler
quelle
-1

Für jemanden, der das gleiche Problem hatte, löste ich durch Drücken von STRG + UMSCHALT + ENTF, um nur den gesamten Browser-Cache zu löschen. Jetzt kann ich über das HTTP-Protokoll auf meine localhost-Website zugreifen.

Renan Coelho
quelle
-2

@ Adiyat Mubarak Antwort hat bei mir nicht funktioniert. Als ich versuchte, den Cache zu leeren und neu zu laden, wurde die Seite immer noch zu https umgeleitet.

Meine Lösung: In der oberen rechten Ecke der URL-Leiste (links neben dem Sternsymbol der Favoriten) befindet sich ein Symbol mit einem "x". Klicken Sie mit der rechten Maustaste darauf, und es wird etwas über "unsichere Skripte" gesagt. Dann besteht die Möglichkeit, sie trotzdem zu laden. TU das.

cph2117
quelle
Wissen Sie, wie diese Option heißt oder wo Sie sie sonst noch finden können? Ich sehe die Verknüpfung nicht in meiner URL-Leiste.
Carolyn Conway
@CarolynConway Ich bin nicht sicher, wie es heißt. Es ist möglich, dass es nur für mein spezielles Problem angezeigt wird.
cph2117
-2

Eine andere Möglichkeit wäre, etwas wie https://github.com/rchampourlier/tunnelss zu verwenden

Sicher, es hat eine weitere Abhängigkeit / Einrichtung hinzugefügt, aber es ermöglicht auch das Testen von https in dev, was sehr hilfreich sein könnte.

Ich benutze RVM jedoch, um Tunnel zum Laufen zu bringen, die ich verwenden musste sudo gem install tunnelssundsudo tunnelss

Herr ISH
quelle
-4

Das ist heute (17-3-2018) die schnellste Lösung:

Schließen Sie alle Chrome-Registerkarten / -Fenster und führen Sie in Ihrer Befehlszeile Folgendes aus: (oder fügen Sie es als Shortcode hinzu)

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --ignore-certificate-errors
gtamborero
quelle