Safari kann localhost nicht erreichen (127.0.0.1)

29890
knorv

Ich habe ein wirklich merkwürdiges Mac-Problem festgestellt: Safari kann keine Verbindung zu localhost herstellen, wohingegen alle anderen Anwendungen eine normale Verbindung herstellen können (Firefox, Chrome, Ping usw.).

Meine / etc / hosts ist die Standardeinstellung:

$ egrep localhost /etc/hosts # localhost is used to configure the loopback interface 127.0.0.1 localhost ::1 localhost  fe80::1%lo0 localhost 127.0.0.1 testing.localhost 

Frage: Ist noch jemandem begegnet? Was könnte das Problem sein?

Update Nr. 1: Ich habe einen Server auf localhost: 8080. Beim Zugriff von Safari erhalte ich die Fehlermeldung "Safari konnte keine Verbindung zum Server herstellen". " http: // localhost: 8080 / " funktioniert einwandfrei in Firefox und Chrome.

Update Nr. 2: Gleiches Problem mit " http://127.0.0.1:8080/ " - es scheint also nicht mit der Auflösung von localhost auf 127.0.0.1 zu tun zu haben.

7
Gibt es eine Fernwahrscheinlichkeit, dass Sie einen Proxyserver verwenden? BinaryMisfit vor 15 Jahren 0
Diago: Ich verwende keinen Proxy-Server. knorv vor 15 Jahren 0
Was ist der http-Server, der auf localhost läuft? nagul vor 15 Jahren 1
Für die Archive (siehe Kommentare bei grawitys Antwort), obwohl sie die obige Frage nicht lösen: Auf meinem Mac OS X 10.6 mit `/ etc / hosts` wie oben und IPv6 auf dem Standardwert * automatic *, der ** anfordert. 127.0.0.1:8080 bewirkt, dass Safari IPv4 ** verwendet (das sich weiterhin mit einem Server verbinden kann, der IPv6 bereitstellt). Anfordern ** localhost: 8080 bewirkt, dass Safari IPv6 verwendet **. Arjan vor 15 Jahren 1
Wie wäre es mit dem Sniffing, um zu sehen, was der Unterschied zwischen den Anforderungen der beiden Browser ist? mihi vor 15 Jahren 0
@knorv, kannst du uns sagen, wie du es gelöst hast? Arjan vor 15 Jahren 0

8 Antworten auf die Frage

4
EvilChookie

Ich denke, wir brauchen etwas mehr Informationen, die auf Ihrer Frage basieren.

Ich nehme an, Sie haben einen Webserver, um Anfragen zu akzeptieren. Ich mache es zurzeit nicht und Safari stellt keine Verbindung zu 127.0.0.1 her, da es "127.0.0.1 nicht finden konnte" - obwohl ich es ganz gut pingen kann.

Also musst du zuerst etwas laufen lassen. Zweitens, haben Sie versucht, mit Safari eine Verbindung zu testing.localhost herzustellen, nur wenn die beiden Einträge verwirrend sind (dies ist durchaus möglich).

Wenn Sie sagen, dass sich Anwendungen mit Chrome und Firefox normal verbinden können, was sehen Sie dann? Die Webseite, die Sie erwarten? Ein anderer Fehler?

Bearbeiten

Ich habe MAMP heruntergeladen und installiert, und ich konnte diesen Fehler nicht reproduzieren.

Einige Forenthreads weisen darauf hin, dass die IPv6-Auflösung dieses Problem verursacht. Ich würde gerne IPv6 deaktivieren und den Eintrag aus der hosts-Datei entfernen (vorübergehend nur zum Testen)

  1. Apple-Menü> Systemeinstellungen
  2. Netzwerk
  3. Wählen Sie Ihre Netzwerkverbindung> Erweitert
  4. Konfigurieren Sie IPv6> Aus

Übernehmen, neu starten und sehen, wie es läuft.

Danke für die Eingabe. Ich habe meinem Beitrag ein klares Update hinzugefügt. knorv vor 15 Jahren 0
Ich hatte das gleiche Problem. Ich habe die IPv6-Leitungen aus / etc / hosts entfernt und es funktioniert. Danke für den Tipp. tamasd vor 13 Jahren 1
2
ericvg

Ich hatte das schon einmal passiert - die Verwendung von http: //computername.local/ hat für mich funktioniert, aber ich bin nicht sicher, warum es anders wäre, als nur einen Namen in einer Hostdatei zu verwenden.

Das Problem könnte sein, dass die Verbindung zu 127.0.0.1 über die Schnittstelle lo0 verläuft, wohingegen computername.local nicht ... Atmocreations vor 15 Jahren 0
1
Snark

Kommentieren Sie die Zeile aus:

::1 localhost 

aus Ihrer / etc / hosts -Datei. Anscheinend wird dies durch die Unterstützung von IPv6 in Safari verursacht.

Möglicherweise haben Sie recht, aber http://127.0.0.1:8080 funktioniert auch nicht, und ich glaube nicht, dass das auf irgendetwas von der hosts-Datei angewiesen wäre. (Wie EvilChookie jedoch geantwortet hat: Das Deaktivieren von IPV6 in den Netzwerkeinstellungen kann zu einem anderen Ergebnis führen.) Arjan vor 15 Jahren 0
1
grawity

Einige Anwendungen entscheiden sich, nur an eine einzige Schnittstelle zu binden - beispielsweise 192.168.13.37, wenn dies die Adresse ist, die eth0 oder einer solchen Adresse zugewiesen ist -, anstatt 0.0.0.0 für alle Schnittstellen zu verwenden.

Andere verwenden möglicherweise nur IPv6-Adressen ::1(localhost) oder ::(alle Schnittstellen). Versuchen Sie es http://[::1]:8080/in diesem Fall.

Interessant! Der `python -m SimpleHTTPServer 8080` unterstützt` http: // [:: 1]: 8080 / `nicht, der eingebaute Apache (Web Sharing) jedoch. (Wenn die Anwendung jedoch nur eine Adresse oder ein Protokoll zulässt, zeigen dann andere Browser beim Herstellen der Verbindung nicht die gleichen Probleme?) Arjan vor 15 Jahren 0
Arjan: Vielleicht versucht Safari zuerst IPv4, erhält "Connection Weiget" und hört auf, es zu versuchen? Ich weiß es eigentlich nicht. grawity vor 15 Jahren 0
Wenn Sie "Listen 8080" oder "Listen [:: 1]: 8080" in Apaches "/ etc / apache2 / httpd.conf" verwenden, zeigt sudo lsof -i: 8080, dass "httpd" nur IPv6 verwendet. Wenn 127.0.0.1:8080 in Safari angefordert wird, wird als "lsof" -show angezeigt, dass Safari IPv4 verwendet. Mit localhost: 8080 verwendet Safari IPv6. Ebenso aktiviert "Listen 127.0.0.1: 8080" nur IPv4. Aber: "Listen localhost: 8080" bewirkt, dass "httpd" sowohl IPv4 als auch IPv6 verwendet. Trotzdem: Safari erledigt alles auf meinem Mac. (Ich frage mich, ob @knorv Probleme bei der Verwendung von Apache oder Python hat und nicht bei den von ihm verwendeten Servern. Und ob das Ändern von etwas wie "Listen" hilfreich ist.) Arjan vor 15 Jahren 0
0
pixeline

Ich werde Ihre Frage nicht direkt beantworten, sondern eine alternative Lösung anbieten: Verwalten Sie das lokale DNS mit virtualhostx . Sehen Sie auch, ob MAMP keine gute Lösung für Ihre lokalen Entwicklungsbedürfnisse ist (wenn Sie das wollen).

Sorry, aber das hat nichts mit meiner Frage zu tun. Ich benutze nicht einmal Apache. knorv vor 15 Jahren 0
0
alexus

Was ist dein DNS? Einige DNS-Anbieter wie OpenDNS hängen von Ihren Einstellungen ab und verhindern möglicherweise, dass Sie irgendwo hingehen. Um DNS zu testen, entfernen Sie das DNS vollständig und stellen Sie sicher, dass auch kein Proxy konfiguriert ist

Ich bezweifle, dass DNS ein Problem sein kann, wenn http://127.0.0.1:8080 nicht funktioniert. Arjan vor 15 Jahren 0
-1
Arjan

Um sicherzustellen, dass es kein Problem mit Ihrem Webserver ist (wie @nagul fragte: Welchen Server verwenden Sie?), Auf meinem 10.6 Snow Leopard mit IPv6 automatisch und auch mit 127.0.0.1 testing.localhostmeinem Server hinzugefügt /etc/hosts, funktioniert Folgendes:

  • Ändern Sie den ListenPort des integrierten Apache von 80 auf 8080:
    sudo vi /etc/apache2/httpd.conf
  • Führen Sie den integrierten Apache aus, indem Sie Systemeinstellungen, Freigabe, Webfreigabe aktivieren. Oder neu starten mit:sudo apachectl restart

Ebenso keine Probleme bei mir mit:

  • python -m SimpleHTTPServer 8080

Ich weiß, dass Sie angegeben haben, dass Sie keinen Proxy verwenden. Nur für den Fall, dass es Zweifel gibt: In aktuellen Firefox-Versionen können Sie zwischen Firefox-spezifischen Netzwerkeinstellungen (die in älteren Versionen die einzige Option waren) und den Systemeinstellungen auswählen. Safari verwendet immer die Systemeinstellungen. Bei guten Proxy-Einstellungen werden natürlich lokale Adressen ignoriert (Standardeinstellungen auf meinem Mac für Bypass-Proxy-Einstellungen für diese Hosts und Domänen: * .local, * .lan, 169.254 / 16 ). Trotzdem könnte man prüfen, ob Firefox noch funktioniert, wenn man die Systemeinstellungen genauso wie Safari verwendet. (Firefox-Voreinstellungen, Erweitert, Registerkarte Netzwerk, Schaltfläche Einstellungen.)

(In den Serverprotokollen oder Konsolenprotokollen? Welche Version von Mac OS?)

-1
aaron

Es scheint, als ob Ihr Server möglicherweise nicht auf der IP-Adresse und dem Port läuft, den Sie erwarten. Was wird ausgegeben, wenn Sie Folgendes in einem Terminal ausführen?

netstat -anp tcp | grep 8080 

Sie sollten eine Zeile sehen, die Ihrem Server entspricht. Wenn keine Zeile angezeigt wird, läuft Ihr Server möglicherweise an einem anderen Port.

Das würde Quite A Wonder dazu bringen, dass andere Browser gut funktionieren. ;-) Arjan vor 15 Jahren 0