Google Chrome mengarahkan localhost ke https

362

Ketika saya men-debug proyek Visual Studio menggunakan Chrome, browser mencoba mengarahkan ulang ke https setara dengan alamat web saya. Saya tidak mengaktifkan SSL di proyek web dan URL awal adalah URL http. Ketika saya debug menggunakan FireFox atau IE saya tidak punya masalah ini.

Saya menginstal ulang Chrome yang memperbaiki masalah selama sehari. Tanpa mengunduh tambahan apa pun, masalah terjadi lagi pada hari berikutnya.

Apa yang membuat Chrome mengarahkan ulang localhost ke https?

Network Inspect Shows: URL Permintaan: data: teks / html, chromewebdata Request Headers Header sementara ditampilkan User-Agent: Mozilla / 5.0 (Windows NT 6.3; WOW64) AppleWebKit / 537.36 (KHTML, seperti Gecko) Chrome / 36.0.1985.143 Safari / 537.36

Tidak ada pratinjau dan tidak ada data respons di tab tersebut.

Brett Mathe
sumber
apa yang diperlihatkan oleh Inspektur Jaringan?
c69
4
Pemeriksaan jaringan tidak menunjukkan banyak sama sekali. Saya bahkan tidak bisa melihat URL yang diminta. URL Permintaan: data: teks / html, chromewebdata Header Permintaan Header sementara ditampilkan di Kontrol-Cache: no-cache Pragma: no-cache Pengguna-Agen: Mozilla / 5.0 (Windows NT 6.3; WOW64) AppleWebKit / 537.36 (KHTML, seperti Gecko ) Chrome / 36.0.1985.143 Safari / 537.36
Brett Mathe
CHROME 63: terus bergulir mencari jawaban
northamerican
Dengan menginstal ulang krom saya menyelesaikan semua masalah .. sekarang .dev saya dan tidak mengarahkan ulang ke https lagi. Saya berharap saya akan mencobanya sebelumnya .. membuang banyak waktu ..
Taj Khan
10
Siapa pun dengan masalah ini baru-baru ini, jika Anda mencoba untuk menggunakan .devsebagai doman lokal Anda, ini adalah masalah yang sama sekali baru, jadi saya tidak berpikir satu pun dari jawaban ini akan berfungsi lagi. Mulai Chrome 63 ... "Chrome untuk memaksa domain .dev ke HTTPS melalui HSTS yang dimuat sebelumnya". Jadi tidak ada lagi sertifikat SSL yang ditandatangani sendiri. Rupanya .dev adalah domain asli. Siapa yang tahu.
Trevor

Jawaban:

592

Saya percaya ini disebabkan oleh HSTS - lihat http://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security

Jika Anda telah (mengembangkan) situs localhost lain yang mengirim header HSTS ...

misalnya. Ketat-Transport-Security: max-age = 31536000; includeSubDomains; preload

... lalu tergantung pada nilai usia maks, permintaan mendatang ke localhost akan diminta untuk dilayani melalui HTTPS.

Untuk menyiasati ini, saya melakukan yang berikut.

  • Di bilah alamat Chrome ketik "chrome: // net-internal / # hsts"
  • Di bagian paling bawah halaman ada kotak teks domain QUERY - verifikasi bahwa localhost dikenal oleh browser. Jika tertulis "Tidak ditemukan" maka ini bukan jawaban yang Anda cari.
  • Jika ya, HAPUS domain localhost menggunakan kotak teks di atas
  • Situs Anda sekarang harus bekerja menggunakan HTTP tua biasa

Ini bukan solusi permanen, tetapi setidaknya akan membuatnya bekerja di antara proyek. Jika ada yang tahu bagaimana cara mengecualikan localhost secara permanen dari daftar HSTS, beri tahu saya :)

UPDATE - November 2017

Chrome baru-baru ini memindahkan pengaturan ini untuk duduk di bawah Hapus kebijakan keamanan domain

masukkan deskripsi gambar di sini

UPDATE - Desember 2017 Jika Anda menggunakan domain .dev lihat jawaban lain di bawah ini sebagai Chrome (dan lainnya) memaksa HTTPS melalui HSTS yang dimuat sebelumnya.

BigJump
sumber
6
Sangat membuat frustrasi. Tetapi sangat senang telah menemukan penyebabnya.
Zapnologica
21
Saya mencoba untuk mencari "localhost" tetapi katanya Tidak ditemukan
Chin
2
Saya tahu ini adalah posting lama, tetapi ada ide bagaimana mengatasi jika, pada permintaan localhost sesuai jawaban yang diterima, itu mengembalikan 'tidak ditemukan'? Mencoba semuanya dalam semua komentar dan jawaban di sini.
DarkW1nter
28
Ini adalah total sampah oleh Chrome. Bagaimana mereka mengharapkan kami untuk melakukan dev secara lokal ketika mereka secara sewenang-wenang mulai memaksa Anda untuk HTTPS di hosting lokal Anda yang aneh? Saya telah menggunakan semuanya dengan baik selama berbulan-bulan, saya log in suatu pagi dan menyelesaikan masalah ini. Tidak satu pun dari "perbaikan" ini yang berfungsi untuk saya.
Alison
50
Jika domain localhost Anda .dev maka saya yakin ini tidak berfungsi @Alison karena pada rilis terbaru dari v.63 ... "Chrome untuk memaksa domain .dev ke HTTPS melalui HSTS yang sudah dimuat sebelumnya". Dengan demikian, .dev pada dasarnya tidak akan berfungsi sama sekali kecuali Anda memiliki sertifikat SSL yang ditandatangani dengan benar. Tidak ada lagi sertifikat yang ditandatangani sendiri. Lebih detail .
Trevor
308

Saya mengalami masalah yang sama di Chrome dan saya gagal mencoba menggunakan solusi BigJump .

Saya memperbaiki masalah saya dengan memaksa penyegaran keras, seperti yang ditunjukkan di blog ini (berasal dari jawaban SuperUser ini ).

Pastikan bilah alamat Anda menggunakan skema http dan kemudian ikuti langkah-langkah ini, mungkin beberapa kali:

  1. Buka panel Alat Pengembang (CTRL + SHIFT + I)
  2. Klik dan tahan ikon muat ulang / Klik kanan ikon muat ulang.
  3. Menu akan terbuka.
  4. Pilih opsi ke-3 dari menu ini ("Empty Cache dan Hard Reload")
Adiyat Mubarak
sumber
3
Anda juga dapat klik kanan pada refresh / isi ulang ikon untuk sampai ke Keras Reload menu
avjaarsveld
3
Saya tidak bisa mendapatkan solusi ini bekerja. Masalahnya adalah ia melakukan reload yang sulit pada localhost: 3000 (dalam kasus saya). Mencoba mengubah protokol sebelum memuat ulang tetapi itu tidak berhasil.
john_omalley
1
Terima kasih!!! Ini mengembalikan localhost: port asli jika Anda telah mengacaukan startup.cs Anda dengan ini ... var options = new RewriteOptions (). AddRedirectToHttpsPermanent (); app.UseRewriter (opsi); }
hubert17
Bekerja untuk saya dengan menekan "CTRL + SHIFT + R" untuk pemuatan ulang yang sulit.
LP. Gonçalves
Pada chromium, itu adalah F12 dan bukan CTRL + SHIFT + I
Champ
190

PERKEMBANGAN BARU! (jika Anda memiliki Chrome 63+)

Jika domain localhost Anda .devmaka saya tidak berpikir jawaban yang diterima dan berfungsi sebelumnya tidak berlaku lagi. Ini karena pada Chrome 63 Chrome akan memaksa domain .dev ke HTTPS melalui HSTS yang dimuat sebelumnya.

Artinya, .devpada dasarnya tidak akan berfungsi sama sekali kecuali Anda telah memiliki sertifikat SSL yang ditandatangani - tidak ada lagi sertifikat yang ditandatangani sendiri! Pelajari lebih lanjut di posting blog ini.

Jadi untuk memperbaiki masalah ini sekarang dan untuk menghindari hal ini terjadi lagi di masa depan .testadalah salah satu domain yang direkomendasikan karena disediakan oleh IETF untuk tujuan pengujian / pengembangan. Anda juga harus dapat menggunakannya .localhostuntuk pengembang lokal.

Trevor
sumber
2
Saya mengubah semua domain .dev menjadi .app, masih memiliki masalah yang sama. Adakah petunjuk tentang apa masalahnya?
Jeff
5
@ Jeff coba gunakan.test
Vitalii Zurian
18
Ini sangat menjengkelkan. Tentunya harus ada cara untuk tidak memaksa kami untuk mengubah domain pengembangan kami, kan?
Emanuele Ciriachi
5
mengganti .devdengan .testbekerja untuk saya juga di Chrome 63
Lekhnath
12
Default kontra-intuitif ini mengerikan. Mengapa orang kehilangan waktu untuk men-debug pengaturan lingkungan dev mereka, atau hanya menebak apa yang salah, hanya untuk mengetahui bahwa semuanya baik-baik saja di pihak mereka dan Google Chrome yang mengalihkan .dev ke HTTPS secara default. Dimana logikanya. Mengapa .dev dan mengapa bukan TLD lainnya? Sama sekali tidak intuitif.
Meglio
50

Membonceng Adiyat Mubarak

Tidak dapat disegarkan karena hanya menyegarkan di https. Mengikuti beberapa langkah yang sama.

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
sumber
Saya di sini kedua kalinya untuk solusinya. Terimakasih banyak.
Čamo
1
Saya menggunakan domain lokal dan ini bekerja ketika solusi HSTS di atas tidak.
DiegoSalazar
Ini adalah satu-satunya hal yang berhasil bagi saya setelah mencoba solusi BigJump dan Adiyat Mubarak.
Alek Arsovski
Menonaktifkan cache juga diperlukan untuk saya. Masalah ini mulai terjadi pada saya setelah mematikan Fiddler.
CounterFlame
47

Saya menghadapi masalah yang sama tetapi hanya di Chrome Canary dan mencari solusi saya telah menemukan posting ini .

salah satu versi Chrome berikutnya akan memaksa semua domain yang berakhiran .dev (dan .foo) dialihkan ke HTTPs melalui tajuk HTTP Strict Transport Security (HSTS) yang dimuat sebelumnya.

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

Jadi, ubah domain Anda.

rafawh
sumber
2
ini masalah yang saya datang ke sini untuk menyelesaikan.
Sobat
2
Dari wiki , .localterdengar agak rapuh, meskipun saya kira itu lebih aman daripada TLD lainnya. Saya juga menarik kembali penggunaan .localhostkarena tampaknya chrome melakukan pengalihan asli yang tampaknya mencegah rproxy saya bekerja. .testtampaknya paling aman, meskipun kikuk karena bentrok namespace dengan semua string yang digunakan dalam TDD / .test()metode dll.
dwelle
8
Kehilangan satu hari dalam hal ini. Terima kasih banyak
Tonio
17
sial, baru saja diperbarui ke Chrome 63 dan sekarang ini memengaruhi saya untuk .dev. WTF. Saya tidak peduli apakah itu TLD yang valid atau tidak, jika saya tidak perlu atau ingin atau memiliki situs saya menggunakan SSL, maka jangan paksa itu pada saya.
dbinott
6
Wow ini membuatku kesal. Untuk beberapa lingkungan pengembangan itu tidak sesederhana hanya mengubah tld. Saya melihat jam kerja sekarang untuk mengubah ini untuk apa yang saya kerjakan. Bukan urusan mereka apa yang ingin saya gunakan untuk berkembang.
Brett Thomas
18

Chrome 63 (keluar sejak Desember 2017), akan memaksa semua domain yang berakhir dengan .dev (dan .foo) dialihkan ke HTTPS melalui tajuk HTTP Strict Transport Security (HSTS) yang dimuat sebelumnya. Anda dapat menemukan informasi lebih lanjut tentang ini di sini.

Tai Ho
sumber
2
^^ Ditto. Itu mempengaruhi .appdomain kami di minggu lalu juga. Kami sementara beralih ke .testmeskipun saya tidak berpikir itu solusi jangka panjang.
russellmania
13

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

Tidak ada perbaikan opsi yang berfungsi untuk saya, untuk memperbaiki https://localhost:3000, ini berhasil.

klik dan tahan ReloadTombol dan pilih Empty Cache and Hard Reload, ini sepertinya hanya menjadi opsi aktiflocalhost

pengguna2167582
sumber
ini tidak bekerja pada saya. Apakah ada solusi lain?
Raju Paladiya
Chrome terbaru diperbarui sehingga solusi ini tidak lagi berfungsi.
user2167582
1
Ini akan berfungsi pada semua domain jika Anda memiliki bilah alat pengembang terbuka
Hussam
7

Saya juga telah berjuang dengan masalah ini. Tampaknya HSTS hanya ditujukan untuk nama domain . Jadi jika Anda mengembangkan di mesin lokal, akan lebih mudah untuk menggunakan alamat IP. Jadi saya beralih dari localhost ke 127.0.0.1

siim
sumber
Itu bagus tapi apakah mungkin untuk memastikan setiap kali Anda mengetik localhost, itu mengganti kata localhost dengan 127.0.0.1?
Simon
Terima kasih banyak
hedha
6

Saya tidak pernah menemukan akar masalahnya, tetapi saya bisa memperbaiki masalah ini. Saya menghapus folder cache aplikasi Google Chrome yang menyelesaikan masalah.

C: \ Pengguna [pengguna] \ AppData \ Lokal \ Google \ Chrome

Brett Mathe
sumber
1
Apakah Anda kehilangan semua riwayat peramban atau kata sandi?
Zapnologica
7
Saya percaya masalahnya adalah Chrome menyimpan ketika Anda mengunjungi domain menggunakan HTTPS dan kemudian jika Anda pernah mengunjungi domain yang sama lagi secara otomatis beralih ke HTTPS. Sangat menyebalkan sebagai pengembang karena setelah Anda mengakses situs localhost menggunakan HTTPS, tiba-tiba semua situs locahost dialihkan ke HTTPS.
Dale K
1
@DaleBurrell Anda tidak benar. Ini disebabkan oleh HSTS: en.wikipedia.org/wiki/HTTP_Strict_Transport_Security
langpavel
6

Ini dapat disebabkan oleh pengalihan https yang di-cache, dan dapat diperbaiki dengan menghapus cache secara manual seperti pada jawaban Adiyat Mubarak.

Tetapi jika Anda mengunjungi localhost, Anda kemungkinan besar adalah pengembang, dalam hal ini Anda akan menemukan ekstensi chrome yang membersihkan cache seperti "pembunuh cache klasik" (lihat misalnya https://chrome.google.com/webstore/search/classic%20cache % 20killer? Hl = id ) berguna dalam berbagai situasi, dan kemungkinan sudah memiliki satu yang terpasang.

Jadi perbaikan cepatnya adalah: Instal cache killer (jika Anda belum memilikinya), aktifkan, dan muat ulang halaman. Selesai!

CalderBot
sumber
Ini memperbaiki masalah ini
makdu
6

Solusi malas dan cepat untuk orang malas seperti saya (bekerja di Chrome 67).

Cukup luncurkan jendela Chrome lain dalam Mode Siluman , dengan opsi "Jendela Penyamaran" (CTRL + SHIFT + N). Tidak perlu menghapus cache, tidak perlu masuk ke pengaturan Chrome yang dalam, dll.

spekdrum
sumber
1
Saya mengalami masalah dengan saran lainnya - mungkin karena saya perlu membuka beberapa halaman web secara bersamaan, semuanya pada domain yang sama tetapi pada server yang berbeda, beberapa di antaranya menggunakan https, yang lain menggunakan http biasa. Tentang tidak ada yang bekerja selain "Jendela Penyamaran"!
Klaws
Ini berfungsi, tetapi itu membuat permintaan AJAX saya sangat lambat karena header sementara.
Ranting
5

Tak satu pun dari ini bekerja untuk saya. Itu mulai terjadi setelah pembaruan chrome (Versi 63.0.3239.84, linux) dengan URL lokal. Akan selalu mengarahkan ke https apa pun yang terjadi. Kehilangan beberapa jam dan banyak kesabaran dalam hal ini

Apa yang berhasil setelah semua itu hanya mengubah domain.

Untuk apa yang layak, domainnya adalah .app. Mungkin itu ada hubungannya? Dan baru saja mengubahnya menjadi .test dan chrome berhenti mengalihkannya

diogo.abdalla
sumber
5

Bagaimana saya memecahkan masalah ini dengan chrome 79:

Cukup tempelkan url ini di input pencarian Anda chrome: // flags / # allow-insecure-localhost

Ini membantu saya dengan menggunakan fitur eksperimental.

Ivan Efremov
sumber
3

Sayangnya, tidak ada solusi yang tercantum di sini yang membantu saya menyelesaikan masalah ini. Saya memperbaiki masalah ini dengan menggunakan http://127.0.0.1 (alamat ip) alih-alih http: // localhost . Peretasan cepat untuk bekerja dengan pengembangan sudut dengan browser chrome.

Venkatesh Muniyandi
sumber
1

Dalam kasus saya, saya mengatur jalur proyek saya /Users/me/dev/project_root/dan menjalankan nodeJS/ expressserver dari sana. Mengganti nama jalur saya ke /Users/me/project_root(menghapus devdari jalur ke proyek) menyelesaikan masalah.

Kemungkinan besar berkaitan dengan peraturan baru ini:

Chrome 63 (keluar sejak Desember 2017), akan memaksa semua domain yang berakhir dengan .dev (dan .foo) dialihkan ke HTTPS melalui tajuk HTTP Strict Transport Security (HSTS) yang dimuat sebelumnya.

Anda dapat menemukan informasi lebih lanjut tentang ini di sini .

Menggunakan:

  • Google Chrome Versi 70.0.3538.110 (Bangun Resmi) (64-bit)
  • nodeJS v9.2.0
Kobbi Gal
sumber
1

Solusi sederhana untuk ini adalah mengedit /etc/hostsfile Anda dan membuat satu alias per proyek.

127.0.0.1   project1 project2 project3

Nama tanpa domain ini tidak akan pernah memiliki masalah dengan HSTS kecuali Anda mengirim respons HSTS yang disebutkan oleh @bigjump dan dengan manfaat tambahan dari mempertahankan sesi login Anda jika Anda berpindah-pindah antar proyek.

pembuat perahu
sumber
0

Buka pengaturan di Chrome dan kemudian ke Pengaturan lanjutan, di bawah bagian privasi dan keamanan klik Hapus data penjelajahan dan kemudian hapus semua data. Saya mengikuti langkah-langkah ini dan itu berhasil untuk saya. Semoga ini bisa membantu seseorang.

pengguna9143776
sumber
0

Chrome 63 memaksa domain .dev otomatis ke HTTPS melalui HSTS yang dimuat sebelumnya.
Perbaikan cepat: cukup ubah domain .dev ke .localhost.

Schoofs Wouter
sumber
0

Ini bukan solusi, itu hanya solusi.

  1. Klik pada proyek studio visual Anda (tingkat atas) di penjelajah solusi dan pergi ke jendela properti.

  2. Ubah SSL Diaktifkan ke true. Anda sekarang akan melihat nomor port lain sebagai 'URL SSL' di jendela properti.

  3. Sekarang, ketika Anda menjalankan aplikasi Anda (atau melihat di browser), Anda harus mengubah nomor port secara manual ke nomor port SSL di bilah alamat.

Sekarang berfungsi dengan baik sebagai tautan SSL

Arunabh Mukherjee
sumber
0

Buka Chrome Developer Tools-> buka Network-> pilih Disable Cache-> muat ulang

Ben Bieler
sumber
-1

Untuk seseorang yang memiliki masalah yang sama, saya menyelesaikannya dengan menekan CTRL + SHIFT + DELETE untuk menghapus hanya seluruh cache browser. Sekarang saya dapat mengakses situs web localhost saya pada protokol HTTP.

Renan Coelho
sumber
-2

@Adiyat Mubarak jawaban tidak bekerja untuk saya. Ketika saya mencoba menghapus cache dan memuat ulang, halaman masih diarahkan ke https.

Solusi saya: Di sudut kanan atas bilah url (tepat di sebelah kiri ikon bintang favorit) ada ikon dengan tanda "x". Klik kanan pada itu, dan itu akan mengatakan sesuatu tentang "skrip tidak aman", lalu ada opsi untuk memuatnya. Lakukan itu.

cph2117
sumber
Apakah Anda tahu apa nama opsi ini, atau di mana lagi dapat menemukannya? Saya tidak melihat pintasan di bilah URL saya.
Carolyn Conway
@CarolynConway Saya tidak yakin apa namanya. Mungkin saja itu hanya muncul untuk masalah khusus saya.
cph2117
-2

Opsi lain adalah menggunakan sesuatu seperti https://github.com/rchampourlier/tunnelss

Tentu itu menambahkan dependensi / setup lain, tetapi juga memungkinkan pengujian https di dev, yang mungkin bagus.

Saya menggunakan RVM namun untuk mendapatkan terowongan bekerja saya harus menggunakan sudo gem install tunnelssdansudo tunnelss

Tuan ISH
sumber
-4

Itulah solusi tercepat hari ini (17-3-2018):

Tutup semua tab / jendela Chrome dan jalankan di baris perintah Anda ini: (atau tambahkan sebagai kode pendek)

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