Google Chrome przekierowuje localhost na https


362

Kiedy debuguję projekt Visual Studio przy użyciu przeglądarki Chrome, przeglądarka próbuje przekierować na https odpowiednik mojego adresu internetowego. Nie mam włączonego protokołu SSL w projekcie internetowym, a początkowy adres URL to adres URL http. Podczas debugowania za pomocą FireFox lub IE nie mam tego problemu.

Ponownie zainstalowałem Chrome, co naprawiło problem przez jeden dzień. Bez pobierania jakichkolwiek dodatków problem powtórzył się następnego dnia.

Co powoduje, że Chrome przekierowuje localhost na https?

Programy inspekcji sieci: Żądanie adresu URL: dane: tekst / html, chromewebdata Żądanie nagłówków Wyświetlane są tymczasowe nagłówki Użytkownik-Agent: Mozilla / 5.0 (Windows NT 6.3; WOW64) AppleWebKit / 537.36 (KHTML, jak Gecko) Chrome / 36.0.1985.143 Safari / 537,36

Brak podglądu i brak danych odpowiedzi na tych kartach.


co pokazuje Network Inspector?
c69,

4
Kontrola sieci w ogóle nie pokazuje wiele. Nie widzę nawet żądanego adresu URL. Żądanie adresu URL: dane: tekst / html, chromewebdata Żądanie nagłówków Wyświetlane są tymczasowe nagłówki Kontrola pamięci podręcznej: brak pamięci podręcznej Pragma: brak pamięci podręcznej User-Agent: Mozilla / 5.0 (Windows NT 6.3; WOW64) AppleWebKit / 537.36 (KHTML, jak Gecko ) Chrome / 36.0.1985.143 Safari / 537.36
Brett Mathe

CHROM 63: przewijaj w poszukiwaniu odpowiedzi
północnoamerykański

Ponowna instalacja mojego Chrome rozwiązuje wszystkie problemy .. teraz mój .dev i nie przekierowanie do https. Chciałbym spróbować tego wcześniej… zmarnowałem tyle czasu…
Taj Khan

10
Każdy, kto ma ostatnio ten problem, jeśli próbujesz użyć go .devjako lokalnego lokatora, jest to zupełnie nowy problem, więc nie sądzę, aby którakolwiek z tych odpowiedzi już działała. Począwszy od Chrome 63 ... „Chrome wymusza domeny .dev na HTTPS przez wstępnie załadowany HSTS”. Nie musisz już samopodpisywać certyfikatów SSL. Najwyraźniej .dev to prawdziwa domena. Kto wiedział.
Trevor,

Odpowiedzi:


591

Uważam, że jest to spowodowane przez HSTS - patrz http://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security

Jeśli masz (opracowałeś) inne witryny localhost, które wysyłają nagłówek HSTS ...

na przykład. Ścisłe bezpieczeństwo transportu: maksymalny wiek = 31536000; includeSubDomains; wstępne ładowanie

... następnie, w zależności od wartości maksymalnego wieku, przyszłe żądania do hosta lokalnego będą musiały być obsługiwane przez HTTPS.

Aby obejść ten problem, wykonałem następujące czynności.

  • W pasku adresu Chrome wpisz „chrome: // net-internals / # hsts”
  • Na samym dole strony znajduje się pole tekstowe domeny QUERY - sprawdź, czy localhost jest znany przeglądarce. Jeśli jest napisane „Nie znaleziono”, to nie jest to odpowiedź, której szukasz.
  • Jeśli tak, usuń domenę localhost, używając pola tekstowego powyżej
  • Twoja witryna powinna teraz działać przy użyciu zwykłego starego protokołu HTTP

To nie jest trwałe rozwiązanie, ale przynajmniej sprawi, że będzie działać między projektami. Jeśli ktoś wie, jak na stałe wykluczyć localhost z listy HSTS, daj mi znać :)

AKTUALIZACJA - listopad 2017 r

Chrome niedawno przeniósł to ustawienie do pozycji Usuń zasady zabezpieczeń domeny

wprowadź opis zdjęcia tutaj

AKTUALIZACJA - grudzień 2017 r. Jeśli używasz domeny .dev, zobacz inne odpowiedzi poniżej, ponieważ Chrome (i inne) wymuszają HTTPS za pośrednictwem wstępnie załadowanego HSTS.


6
Bardzo frustrujące. Ale tak się cieszę, że znalazłem przyczynę.
Zapnologica,

21
Próbowałem zapytać o „localhost”, ale napisano: Nie znaleziono
Chin

2
Wiem, że jest to stary post, ale masz jakiś pomysł, jak rozwiązać, czy po zapytaniu localhost zgodnie z przyjętą odpowiedzią zwraca „nie znaleziono”? Próbowałem wszystkiego we wszystkich komentarzach i odpowiedziach tutaj.
DarkW1nter

28
To są wszystkie śmieci w Chrome. Jak spodziewają się, że będziemy tworzyć lokalnie, gdy tylko arbitralnie zaczną zmuszać cię do HTTPS na twoim cholernym lokalnym hoście? Używałem wszystkiego w porządku od miesięcy, loguję się pewnego ranka i radzę sobie z tym gównem. Żadna z tych „poprawek” nie działa dla mnie.
Alison,

50
Jeśli twoja domena localhost jest, .dev to uważam, że to nie działa @Alison, ponieważ od najnowszej wersji v.63 ... „Chrome wymusza domeny .dev na HTTPS przez wstępnie załadowany HSTS”. W związku z tym .dev w zasadzie nie będzie działać, chyba że masz poprawnie podpisany certyfikat SSL. Nie są dozwolone żadne certyfikaty z podpisem własnym. Więcej szczegółów .
Trevor,

308

Ten sam problem wystąpił w przeglądarce Chrome i bezskutecznie próbowałem użyć rozwiązania BigJump .

Rozwiązałem problem, wymuszając twarde odświeżanie, jak pokazano na tym blogu (pierwotnie z tej odpowiedzi SuperUser ).

Upewnij się, że pasek adresu korzysta ze schematu http, a następnie wykonaj następujące kroki, być może kilka razy:

  1. Otwórz panel Narzędzi programisty (CTRL + SHIFT + I)
  2. Kliknij i przytrzymaj ikonę przeładowania / Kliknij prawym przyciskiem ikonę przeładowania.
  3. Otworzy się menu.
  4. Wybierz trzecią opcję z tego menu („Opróżnij pamięć podręczną i uruchom ponownie”)

3
Można także kliknąć prawym przyciskiem myszy odświeżania / reload ikona dostać się do twardego Reload menu
avjaarsveld

3
Nie mogę uruchomić tego rozwiązania. Problem polega na tym, że trudno przeładowuje na localhost: 3000 (w moim przypadku). Próba zmiany protokołu przed przeładowaniem, ale to nie działa.
john_omalley

1
Dziękuję Ci!!! Przywraca oryginalny localhost: port, jeśli pomieszałeś plik startup.cs z tym ... var options = new RewriteOptions (). AddRedirectToHttpsPermanent (); app UseRewriter (opcje); }
hubert17

Pracowałem dla mnie, naciskając „CTRL + SHIFT + R” dla twardego przeładowania.
LP. Gonçalves,

Na chromie jest to F12, a nie CTRL + SHIFT + I
Champ

190

NOWE ULEPSZENIA! (jeśli masz Chrome 63+)

Jeśli twoja domena localhost jest .dev, to nie sądzę, aby wcześniej zaakceptowane i działające odpowiedzi nie miały już zastosowania. Wynika to z tego, że od Chrome 63 Chrome wymusza domeny .dev do HTTPS za pośrednictwem wstępnie załadowanego HSTS.

Oznacza to, że w .devzasadzie nie będzie już działać, jeśli nie masz odpowiedniego podpisanego certyfikatu SSL - nie są już dozwolone certyfikaty z podpisem własnym! Dowiedz się więcej w tym poście na blogu.

Tak więc naprawienie tego problemu teraz i uniknięcie tego w przyszłości .testto jedna zalecana domena, ponieważ jest zarezerwowana przez IETF do celów testowych / deweloperskich. Powinieneś także mieć możliwość korzystania .localhostz lokalnego dewelopera.


2
Zmieniłem wszystkie domeny .dev na .app, wciąż ten sam problem. Jakieś wskazówki na temat problemu?
Jeff

5
@Jeff spróbuj użyć.test
Vitalii Zurian

18
To jest wyjątkowo denerwujące. Z pewnością musi istnieć jakiś sposób, aby nie zmuszać nas do zmiany naszej domeny programistycznej, prawda?
Emanuele Ciriachi

5
zastąpienie .devprzez .testpracował również dla mnie w Chrome 63
Lekhnath

12
Te sprzeczne z intuicją wartości domyślne są okropne. Dlaczego warto tracić czas na debugowanie konfiguracji środowiska programistycznego lub po prostu zgadywanie, co się dzieje nie tak, aby odkryć, że wszystko jest w porządku po ich stronie i to Google Chrome domyślnie przekierowuje .dev do HTTPS. Gdzie jest logika. Dlaczego .dev, a dlaczego nie inne TLD? Absolutnie nie intuicyjne.
Meglio,

50

Piggybacking off Adiyat Mubarak

Nie można mocno odświeżyć, ponieważ było to po prostu odświeżanie na https. Wykonuje niektóre z tych samych kroków.

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)

Jestem tu drugi raz po rozwiązanie. Wielkie dzięki.
Čamo,

1
Używam domeny .local i zadziałało, gdy powyższe rozwiązanie HSTS nie.
DiegoSalazar,

To jedyna rzecz, która działała dla mnie po wypróbowaniu rozwiązań BigJump i Adiyata Mubaraka.
Alek Arsovski

Wyłączenie pamięci podręcznej było również dla mnie konieczne. Ten problem zaczął mi się pojawiać po wyłączeniu Fiddlera.
CounterFlame

47

Mam ten sam problem, ale tylko w Chrome Canary i szukając rozwiązania znalazłem ten post .

jedna z następnych wersji Chrome wymusi przekierowanie wszystkich domen kończących się na .dev (i .foo) na przekierowanie na HTTP za pomocą wstępnie załadowanego nagłówka HTTP Strict Transport Security (HSTS).

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

Więc zmień swoje domeny.


2
to jest problem, który przyszedłem tu rozwiązać. człowieku, teraz muszę wymyślić inny fałszywy tld dla moich lokalnych stron
deweloperów

2
Z wiki , .localbrzmi trochę kruche, choć myślę, że to bezpieczniejsze niż inne TLD. .localhostCofam również użycie coz, ponieważ wygląda na to, że chrome dokonuje natywnego przekierowania, co wydaje się uniemożliwiać działanie mojego rproxy. .testwydaje się najbezpieczniejszy, choć niezgrabny z powodu kolizji przestrzeni nazw ze wszystkimi ciągami znaków używanymi w TDD / .test()metodach itp.
dwelle

8
Straciłem na tym dzień. Wielkie dzięki
Tonio,

17
cholera, właśnie zaktualizowałem Chrome 63, a teraz dotyczy mnie to .dev. WTF. Nie dbam o to, czy jest to prawidłowa TLD, czy nie, jeśli nie potrzebuję, nie chcę lub nie chcę, aby moja strona używała protokołu SSL, nie zmuszaj mnie do tego.
dbinott,

6
Wow, to mnie wkurza. W niektórych środowiskach programistycznych nie jest to tak proste, jak zmiana tld. Patrzę teraz na godziny pracy, żeby to zmienić na to, nad czym pracuję. To naprawdę nie jest ich biznes, z czego chciałbym korzystać do programowania.
Brett Thomas,

18

Chrome 63 (dostępny od grudnia 2017 r.) Wymusi przekierowanie wszystkich domen kończących się na .dev (i .foo) na przekierowanie do HTTPS za pomocą wstępnie załadowanego nagłówka HTTP Strict Transport Security (HSTS). Więcej informacji na ten temat można znaleźć tutaj.


2
^^ Ditto. Wpłynęło to również na nasze .appdomeny w ostatnim tygodniu. Tymczasowo przechodzimy na, .testchoć nie sądzę, że jest to rozwiązanie długoterminowe.
russellmania

13

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

Żadna z poprawek opcji nie działała dla mnie. Naprawiłem https://localhost:3000to.

kliknij i przytrzymaj Reloadprzycisk i wybierz Empty Cache and Hard Reload, wydaje się, że jest to tylko opcja włączonalocalhost


to nie działa na moim końcu. Czy jest jakieś inne rozwiązanie?
Raju Paladiya,

Ostatnia aktualizacja Chrome, więc to rozwiązanie nie będzie już działać.
user2167582,

1
Powinno to działać we wszystkich domenach, jeśli masz otwarty pasek narzędzi dla programistów
Hussam

7

Walczyłem również z tym problemem. Wydaje się, że HSTS jest przeznaczony tylko dla nazw domen . Jeśli więc pracujesz na komputerze lokalnym, o wiele łatwiej jest użyć adresu IP. Więc przełączyłem się z localhost na 127.0.0.1


To dobrze, ale czy można zapewnić, że za każdym razem, gdy wpiszesz localhost, zastępuje on słowa localhost na 127.0.0.1?
Simon

Dziękuję bardzo
hedha,

6

Nigdy nie odkryłem źródła problemu, ale udało mi się go rozwiązać. Usunąłem folder pamięci podręcznej aplikacji Google Chrome, który rozwiązał problem.

C: \ Users [users] \ AppData \ Local \ Google \ Chrome


1
Czy straciłeś całą historię przeglądarki lub hasła?
Zapnologica

7
Uważam, że problem polega na tym, że Chrome przechowuje dane, gdy odwiedzasz domenę za pomocą HTTPS, a następnie, jeśli kiedykolwiek odwiedzasz tę samą domenę, automatycznie przełącza się na HTTPS. Boli mnie to jako dewelopera, ponieważ po uzyskaniu dostępu do dowolnej witryny localhost za pomocą HTTPS nagle wszystkie strony locahost zostają przekierowane do HTTPS.
Dale K

1
@DaleBurrell Nie masz racji. Jest to spowodowane przez HSTS: en.wikipedia.org/wiki/HTTP_Strict_Transport_Security
langpavel

6

Może to być spowodowane przekierowaniem https w pamięci podręcznej i można to naprawić, czyszcząc pamięć podręczną ręcznie, jak w odpowiedzi Adiyata Mubaraka.

Ale jeśli odwiedzasz localhost, prawdopodobnie jesteś programistą, w którym to przypadku znajdziesz rozszerzenie czyszczenia pamięci podręcznej Chrome, takie jak „klasyczny zabójca pamięci podręcznej” (patrz np. Https://chrome.google.com/webstore/search/classic%20cache % 20killer? Hl = en ) przydatny w różnych sytuacjach i prawdopodobnie już go zainstalował.

Szybka poprawka polega więc na: zainstalowaniu zabójcy pamięci podręcznej (jeśli jeszcze go nie masz), włącz go i ponownie załaduj stronę. Gotowy!


To rozwiązało problem
makdu

6

Leniwe i szybkie rozwiązanie dla leniwych ludzi takich jak ja (pracujący w Chrome 67).

Wystarczy uruchomić kolejne okno Chrome w trybie ukrycia , z opcją „Okno incognito” (CTRL + SHIFT + N). Nie musisz usuwać pamięci podręcznej, nie musisz zagłębiać się w głębokie ustawienia Chrome itp.


1
Miałem problem z innymi sugestiami - być może dlatego, że musiałem mieć kilka różnych stron internetowych otwartych w tym samym czasie, wszystkie w tej samej domenie, ale na różnych serwerach, niektóre z tych serwerów internetowych korzystały z https, inne zwykły http. Nic więcej nie działa oprócz „okna incognito”!
Klaws,

To działa, ale powoduje, że moje żądania AJAX są wyjątkowo wolne z powodu tymczasowych nagłówków.
Gałązki

5

Żadne z tych nie działało dla mnie. Zaczęło się dziać po aktualizacji chrome (wersja 63.0.3239.84, linux) z lokalnym adresem URL. Zawsze przekierowuje do https bez względu na wszystko. Straciłem kilka godzin i dużo cierpliwości w tej sprawie

W końcu to, co zadziałało, to po prostu zmiana domeny.

Co warte jest, domeną był .app. Może ma coś do zrobienia? Po prostu zmieniłem go na .test i chrome przestał go przekierowywać


5

Jak rozwiązałem ten problem z chrome 79:

Wystarczy wkleić ten adres URL do wyszukiwania, wpisując chrome: // flags / # allow-insecure-localhost

Pomogło mi to, używając funkcji eksperymentalnych.



1

W moim przypadku moja ścieżka projektu była ustawiona jako /Users/me/dev/project_root/i odtąd uruchamiałam nodeJS/ expressserver. Zmiana nazwy mojej ścieżki na /Users/me/project_root(usunięcie devze ścieżki do projektu) rozwiązała problem.

Najprawdopodobniej ma to związek z tym nowym rozporządzeniem:

Chrome 63 (dostępny od grudnia 2017 r.) Wymusi przekierowanie wszystkich domen kończących się na .dev (i .foo) na przekierowanie do HTTPS za pomocą wstępnie załadowanego nagłówka HTTP Strict Transport Security (HSTS).

Więcej informacji na ten temat można znaleźć tutaj .

Za pomocą:

  • Google Chrome Wersja 70.0.3538.110 (oficjalna wersja) (64-bit)
  • nodeJS v9.2.0

1

Prostym rozwiązaniem tego jest edycja /etc/hostspliku i ustanowienie jednego aliasu dla każdego projektu.

127.0.0.1   project1 project2 project3

Te bezdomne nazwy nigdy nie będą miały problemu z HSTS, chyba że wyślesz odpowiedź HSTS wspomnianą przez @bigjump, a dodatkową korzyścią będzie utrzymanie sesji logowania, jeśli zmienisz się pomiędzy projektami.


0

Przejdź do ustawień w Chrome, a następnie do ustawień zaawansowanych, w sekcji prywatności i bezpieczeństwa kliknij Wyczyść dane przeglądania, a następnie wyczyść wszystkie dane. Postępowałem zgodnie z tymi krokami i zadziałało to dla mnie. Mam nadzieję, że to komuś pomoże.


0

Chrome 63 zmusza domeny .dev automatycznie do HTTPS poprzez wstępnie załadowany HSTS.
Szybka poprawka: wystarczy zmienić domeny .dev na .localhost.


0

To nie jest rozwiązanie, to tylko obejście.

  1. Kliknij projekt Visual Studio (najwyższy poziom) w Eksploratorze rozwiązań i przejdź do okna właściwości.

  2. Zmień SSL włączone na true. W oknie właściwości zobaczysz teraz inny numer portu jako „SSL URL”.

  3. Teraz, kiedy uruchomisz aplikację (lub przeglądasz w przeglądarce), musisz ręcznie zmienić numer portu na numer portu SSL na pasku adresu.

Teraz działa dobrze jako link SSL


0

Otwórz Chrome Developer Tools-> przejdź do Network-> wybierz Disable Cache-> załaduj ponownie


-1

Dla kogoś, kto miał ten sam problem, rozwiązałem naciskając klawisze CTRL + SHIFT + DELETE, aby usunąć tylko całą pamięć podręczną przeglądarki. Teraz mogę uzyskać dostęp do mojej strony localhost na protokole HTTP.


-2

@Adiyat Mubarak odpowiedź nie działała dla mnie. Gdy próbowałem wyczyścić pamięć podręczną i ponownie ją załadować, strona nadal przekierowała do https.

Moje rozwiązanie: w prawym górnym rogu paska adresu (po lewej stronie ikony ulubionych) znajduje się ikona z literą „x”. Kliknij to prawym przyciskiem myszy, a powie coś o „niebezpiecznych skryptach”, a następnie istnieje możliwość ich załadowania. Zrób to.


Czy wiesz, jak nazywa się ta opcja lub gdzie ją znaleźć? Nie widzę skrótu na pasku adresu URL.
Carolyn Conway,

@CarolynConway Nie jestem pewien, jak się nazywa. Możliwe, że pojawia się tylko w przypadku mojego konkretnego problemu.
cph2117

-2

Inną opcją byłoby użycie czegoś takiego jak https://github.com/rchampourlier/tunnelss

Pewnie dodało to inną zależność / konfigurację, ale umożliwia także testowanie https w dev, co może być miłe.

Używam RVM jednak, aby tunele działały, musiałem użyć sudo gem install tunnelssisudo tunnelss


-4

To dziś najszybsze rozwiązanie (17-3-2018):

Zamknij wszystkie karty / okna Chrome i uruchom w wierszu polecenia: (lub dodaj go jako krótki kod)

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --ignore-certificate-errors
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.