Saya menggunakan OS X 10.8.5 dan Chrome 30.
Saya menambahkan 127.0.0.1 youtube.com
ke /etc/hosts
file saya sehingga sekarang berisi ini:
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
fe80::1%lo0 localhost
127.0.0.1 youtube.com
Ketika saya menjalankan perintah, traceroute youtube.com
saya menerima hasil yang diharapkan (youtube.com diselesaikan ke 127.0.0.1):
traceroute to youtube.com (127.0.0.1), 64 hops max, 52 byte packets
1 localhost (127.0.0.1) 0.272 ms 0.118 ms 0.063 ms
Namun, ketika saya mengetik youtube.com di Chrome, browser saya tidak membuat koneksi dengan 127.0.0.1 tetapi sebaliknya dengan alamat IP "normal" untuk YouTube. Saya berharap Chrome akan menyelesaikan youtube.com menjadi 127.0.0.1.
Saya telah mengonfigurasi Chrome untuk menggunakan pengaturan proxy sistem saya. Di OS X, ketika saya pergi ke System Preferences> Network> "Advanced ..."> Proxy, saya telah memilih "Auto Proxy Discovery".
Mengapa Chrome tampaknya mengabaikan /etc/hosts
file saya ?
sumber
Jawaban:
Coba tambahkan
www.youtube.com
ke file host Anda.youtube.com
dialihkan secara permanen kewww.youtube.com
, jadi selama Anda telah mengunjungiyoutube.com
sekali, browser Anda akan men-cache respons ini dan mengarahkan Anda kewww.youtube.com
. Alamat ini tidak ada dalam file host Anda, jadi chrome secara logis menyelesaikannya dengan benar.sumber
www
tidak berfungsi untuk saya. Bahkan setelah menghapus semua data browser saya dan membilas DNS saya. Mungkin ini tindakan anti-phishing yang dimasukkan ke Chrome?Google Chrome mengabaikan file host Anda dan melakukan pencarian DNS yang sebenarnya (terlepas dari apa yang dipikirkan orang lain,
/etc/hosts
bukan bagian dari DNS, itu adalah apa yang digunakan sebelum DNS). Meskipun Google Chrome harus menghormati entri file host tersebut, namun tidak. File host, sebagai alternatif untuk DNS, akan dibaca ketika tidak ada server DNS yang tersedia (seperti jika Anda menonaktifkan koneksi jaringan Anda).Anda dapat menguji ini dengan menambahkan "127.0.0.1 foobar.dev" ke file host Anda, kemudian mengaktifkan wireshark dan menonton di antarmuka jaringan Anda. Buka Chrome dan masukkan
http://foobar.dev/
bilah alamat Anda dan pergi. Anda akan melihat permintaan DNS di Wireshark, sesuatu seperti:FWIW, Google DNS mengembalikan 127.0.53.53 untuk foobar.dev.
Solusinya adalah dengan menggunakan HostAdmin yang merupakan ekstensi Chrome lama yang membuat Chrome menggunakan host. Namun, versi Chrome yang lebih baru (> 38, dengan tepat) tidak lagi mendukungnya.
sumber
/etc/hosts
file pada OS X. Setidaknya bukan Chrome v43 pada OS X 10.10.3.Saya memperbaiki masalah ini dengan: Matikan "Lindungi Anda dan perangkat Anda dari situs berbahaya" di Preferensi Lanjutan Chrome.
"Perlindungan" built-in Chrome termasuk memeriksa domain terhadap DNS mereka sendiri secara langsung dan mem-bypass jenis entri host tertentu yang dianggapnya "mencurigakan" atau entri untuk situs yang ada yang sedang ditimpa, yang berarti sebagian besar entri host kustom diabaikan. Terutama entri * .dev dan * .local yang digunakan untuk pengembangan.
Menonaktifkan ini telah menyelesaikan masalah 100% dari waktu untuk saya. Ini membuat saya marah selama berbulan-bulan ketika melakukan pengembangan lokal dan saya tidak dapat menemukan jawaban yang terdaftar di mana saja, semua orang terus mengatakan itu tidak mungkin terjadi. Ternyata itu adalah beralih sederhana di pengaturan lanjutan. Semoga ini bisa membantu Anda juga, tepuk tangan.
sumber
Localhost adalah konvensi untuk alamat 127.0.0.1 yang merupakan alamat internal untuk tcp / ip, namun, Chrome tidak menggunakan / etc / hosts untuk menyelesaikan alamat, itu menggunakan server DNS, oleh karena itu alamat apa pun tidak berasal dari Anda / etc / hosts, tetapi dari server DNS, jika menggunakan / etc / hosts, ia harus menahan seluruh nama host www untuk menyelesaikan alamat apa pun.
Semoga ini membantu.
sumber
/etc/hosts
mengganti server DNS apa pun. Ya, jika Anda hanya menggunakan/etc/hosts
, itu harus mengandung semua nama domain, tetapi sebagian besar pengaturan juga termasuk server DNS. Jika Chrome hanya meminta OS untuk menyelesaikan nama domain, seperti seharusnya ,/etc/hosts
akan diperiksa terlebih dahulu, dan jika tidak mengandung entri, maka permintaan DNS akan dikirim./etc/hosts
harus menimpa dan permintaan DNS tetapi ini tidak terjadi dengan Google Chrome. Itu preforms pencarian DNS sendiri meskipun apa yang mungkin di file host. Ini mudah dibuktikan. Ini secara khusus merupakan masalah untuk pengembangan lokal menggunakan.dev
TLD.Saya menemukan pertanyaan ini dengan berpikir bahwa
hosts
file tidak berfungsi di Chrome untuk macOS untuk.dev
domain palsu yang saya gunakan untuk pengembangan.Sebenarnya itu tidak bekerja, setidaknya pada Chrome 77.
Masalahnya bukan bahwa domain tidak ditemukan, tetapi semua .dev sekarang secara otomatis dialihkan ke https :
Jika Anda mengklik dua kali pada nama domain, Anda dapat melihat penyebabnya:
Sekarang setelah Google memutuskan
.dev
, sebagai solusi, tautan di atas menyarankan untuk pindah ke TLD lain untuk pengembangan, seperti.test
atau.localhost
.sumber