Ich verwende OS X 10.8.5 und Chrome 30.
Ich 127.0.0.1 youtube.com
habe meine /etc/hosts
Datei so ergänzt, dass sie jetzt Folgendes enthält:
# 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
Wenn ich den Befehl ausführe, traceroute youtube.com
erhalte ich die erwarteten Ergebnisse (youtube.com wurde in 127.0.0.1 aufgelöst):
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
Wenn ich jedoch in Chrome youtube.com eingebe, stellt mein Browser keine Verbindung mit 127.0.0.1 her, sondern mit der "normalen" IP-Adresse für YouTube. Ich hätte erwartet, dass Chrome youtube.com auf 127.0.0.1 auflöst.
Ich habe Chrome so konfiguriert, dass die Proxy-Einstellungen meines Systems verwendet werden. Wenn ich in OS X zu Systemeinstellungen> Netzwerk> "Erweitert ..."> Proxies gehe, habe ich "Auto Proxy Discovery" ausgewählt.
Warum ignoriert Chrome meine /etc/hosts
Datei anscheinend ?
quelle
Antworten:
Versuchen Sie,
www.youtube.com
zu Ihrer Hosts-Datei hinzuzufügen .youtube.com
wird permanent weitergeleitet zuwww.youtube.com
, so lange Sie einmal besucht habenyoutube.com
, speichert Ihr Browser diese Antwort im Cache und leitet Sie weiter zuwww.youtube.com
. Diese Adresse befindet sich nicht in Ihrer Hosts-Datei. Daher wird sie von Chrome logisch korrekt aufgelöst.quelle
www
funktioniert bei mir nicht. Auch nach dem Löschen aller Daten meines Browsers und dem Leeren meines DNS. Vielleicht ist dies eine in Chrome eingebrannte Phishing-Schutzmaßnahme?Google Chrome ignoriert Ihre Hosts-Datei und führt tatsächliche DNS-Suchvorgänge durch (obwohl andere denken, dass dies
/etc/hosts
nicht Teil von DNS ist, sondern das, was vor DNS verwendet wurde). Google Chrome sollte zwar die Einträge in der Hostdatei berücksichtigen, dies ist jedoch nicht der Fall. Die Hosts-Datei, die eine Alternative zu DNS darstellt, wird gelesen, wenn kein DNS-Server verfügbar ist (z. B. wenn Sie Ihre Netzwerkverbindung deaktiviert haben).Sie können dies testen, indem Sie "127.0.0.1 foobar.dev" zu Ihrer Hosts-Datei hinzufügen und dann Wireshark aktivieren und auf Ihrer Netzwerkschnittstelle beobachten. Öffne Chrome und gib
http://foobar.dev/
deine Adressleiste ein und los geht's. In Wireshark wird eine DNS-Abfrage angezeigt, etwa:FWIW, Google DNS gibt 127.0.53.53 für foobar.dev zurück.
Eine Problemumgehung wäre die Verwendung von HostAdmin , einer älteren Chrome-Erweiterung, mit der Chrome die Hosts verwendet. Neuere Versionen von Chrome (> 38) unterstützen dies jedoch nicht mehr.
quelle
/etc/hosts
Dateien unter OS X nicht. Zumindest nicht Chrome v43 unter OS X 10.10.3.Ich habe dieses Problem folgendermaßen behoben: Deaktivieren Sie in den erweiterten Einstellungen von Chrome die Option "Schützen Sie Sie und Ihr Gerät vor gefährlichen Websites".
Der integrierte "Schutz" von Chrome umfasst das direkte Überprüfen einer Domain anhand ihres eigenen DNS und das Umgehen bestimmter Arten von Hosteinträgen, die als "verdächtig" eingestuft werden, oder von Einträgen für Websites, die überschrieben werden. Dies bedeutet, dass die meisten benutzerdefinierten Hosteinträge ignoriert werden. Insbesondere * .dev- und * .local-Einträge, die für die Entwicklung verwendet werden.
Wenn Sie dies deaktivieren, ist das Problem in 100% der Fälle für mich behoben. Das hat mich monatelang wütend gemacht, als ich lokale Entwicklung betrieben habe, und ich konnte die Antwort nirgendwo finden, alle sagten nur, es könne nicht passieren. Es stellte sich heraus, dass es sich bei den erweiterten Einstellungen um ein einfaches Umschalten handelte. Hoffe das hilft dir auch, Prost.
quelle
Localhost ist eine Konvention für die 127.0.0.1-Adresse, die eine interne Adresse für TCP / IP ist. Chrome verwendet jedoch nicht die Datei / etc / hosts, um die Adresse aufzulösen. Es wird ein DNS-Server verwendet. Daher stammt keine Adresse von Ihnen / etc / hosts, aber von einem DNS-Server, wenn er / etc / hosts verwendet, muss er den gesamten WWW-Hostnamen enthalten, um eine Adresse aufzulösen.
Hoffe das hilft.
quelle
/etc/hosts
Überschreibt alle DNS-Server. Ja, wenn Sie nur/etc/hosts
DNS verwenden , müssen alle Domänennamen enthalten sein. Die meisten Setups enthalten jedoch auch DNS-Server. Wenn Chrome das Betriebssystem lediglich auffordert, den Domain-Namen wie gewünscht aufzulösen ,/etc/hosts
wird dies zuerst überprüft. Wenn der Name keinen Eintrag enthält, wird eine DNS-Abfrage gesendet./etc/hosts
sollte überschreiben und DNS-Anfrage, aber dies ist nicht der Fall mit Google Chrome. Es führt seine eigenen DNS-Suchvorgänge durch, ungeachtet dessen, was möglicherweise in der Hosts-Datei enthalten ist. Dies ist leicht nachweisbar. Dies ist speziell ein Problem für die lokale Entwicklung mit der.dev
TLD.Ich bin auf diese Frage gestoßen, als ich dachte, dass die
hosts
Datei unter Chrome für MacOS für die.dev
gefälschten Domains, die ich für die Entwicklung verwende, nicht funktioniert hat .Tatsächlich funktioniert es zumindest auf Chrome 77.
Das Problem ist nicht, dass die Domain nicht gefunden wird, sondern dass alle .dev automatisch zu https umgeleitet werden :
Wenn Sie auf den Domainnamen doppelklicken, sehen Sie den Täter:
Nachdem Google unsere
.dev
als Lösung gebrochen hat , schlägt der obige Link vor, zur Entwicklung auf eine andere TLD wie.test
oder zu wechseln.localhost
.quelle