Safari nie może dotrzeć do localhost (127.0.0.1)


7

Napotkałam naprawdę dziwny problem z komputerem Mac: Safari nie może połączyć się z localhost, podczas gdy wszystkie inne aplikacje mogą łączyć się jak zwykle (Firefox, Chrome, ping itp.).

Mój / etc / hosts to standardowa konfiguracja:

$ 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

Pytanie: Czy ktoś inny to napotkał? Jaki może być problem?

Aktualizacja # 1: Mam serwer działający na localhost: 8080. Podczas uzyskiwania dostępu z przeglądarki Safari pojawia się komunikat o błędzie „Safari nie może połączyć się z serwerem”. „ http://localhost-8080.com/ „działa bez zarzutu w Firefoksie i Chrome.

Aktualizacja nr 2: ten sam problem z „ http://127.0.0.1:8080/ „- więc wydaje się, że nie jest to związane z rozwiązaniem localhost na 127.0.0.1.


Czy istnieje jakaś szansa, że ​​korzystasz z serwera proxy?
BinaryMisfit

Diago: Nie używam serwera proxy.
knorv

1
Co to jest serwer http działający na localhost?
nagul

1
Dla archiwów (patrz komentarze na odpowiedź grawity), choć nie rozwiązuje to powyższego pytania: na moim Mac OS X 10.6, z /etc/hosts jak powyżej, a IPv6 pozostawiono domyślnie automatyczny , prosząc 127.0.0.1:8080 sprawia, że ​​Safari używa IPv4 (który nadal mógł połączyć się z serwerem udostępniającym IPv6). Żądanie localhost: 8080 sprawia, że ​​Safari używa IPv6 .
Arjan

jak wąchać, aby zobaczyć, jaka jest różnica między żądaniami dwóch przeglądarek?
mihi

Odpowiedzi:


4

Myślę, że potrzebujemy trochę więcej informacji na podstawie twojego pytania.

Zgaduję, że masz serwer WWW, który akceptuje żądania? Obecnie tego nie robię, a Safari nie połączy się z 127.0.0.1, ponieważ „Nie można znaleźć 127.0.0.1” - mimo że mogę pingować to dobrze.

Więc najpierw musisz mieć coś uruchomionego. Po drugie, czy próbowałeś połączyć się z testing.localhost z Safari, po prostu zachowaj dwa wpisy, które wprowadzają w błąd Safari (jest to całkowicie możliwe).

Kiedy mówisz „aplikacje mogą się łączyć jak zwykle” z Chrome i Firefox, co widzisz? Strona internetowa, którą spodziewasz się zobaczyć? Inny błąd?

Edytować

Pobrałem i zainstalowałem MAMP i nie mogłem odtworzyć tego błędu.

Niektóre wątki forum sugerują, że przyczyną problemu jest rozdzielczość IPv6. Byłbym skłonny wyłączyć IPv6 i usunąć wpis z pliku hosts (tymczasowo tylko do testowania)

  1. Menu Apple & gt; Preferencje systemu
  2. Sieć
  3. Wybierz swoje połączenie sieciowe & gt; zaawansowane
  4. Skonfiguruj IPv6 & gt; Poza

Zastosuj, uruchom ponownie i zobacz, jak to działa.


Dzięki za wejście. Dodałem aktualizację do mojego posta.
knorv

1
Miałem ten sam problem. Usunąłem linie IPv6 z / etc / hosts i działa. Dzięki za podpowiedź.
tamasd

2

Zdarzyło mi się to przed - użyciem http: //nazwa_komputera.local/ pracował dla mnie, ale nie jestem pewien, dlaczego byłoby inaczej niż używanie nazwy w pliku hosta.


problem może polegać na tym, że połączenie z 127.0.0.1 przechodzi przez interfejs lo0, podczas gdy nazwa_komputera.local nie musi ...
Atmocreations

1

Skomentuj linię:

::1         localhost 

z pliku / etc / hosts. Najwyraźniej byłoby to spowodowane obsługą IPv6 w Safari.


Możesz mieć rację, ale 127.0.0.1:8080 też nie działa i nie sądzę, żeby polegało na czymkolwiek z pliku hosts. (Jednak, jak odpowiedział EvilChookie: wyłączenie IPV6 w ustawieniach sieci może mieć inny wynik.)
Arjan

1

Niektóre aplikacje decydują się na powiązanie tylko z jednym interfejsem - 192.168.13.37, na przykład, jeśli jest to adres przypisany do eth0 lub takiego - zamiast używania 0.0.0.0 dla wszystkich interfejsów.

Inni mogą używać tylko adresów IPv6 ::1 (localhost) lub :: (wszystkie interfejsy). Próbować http://[::1]:8080/ w tym przypadku.


Ciekawy! The python -m SimpleHTTPServer 8080 nie wspiera http://[::1]:8080/ ale wbudowany Apache (Web Sharing) tak. (Jeśli jednak aplikacja zezwala tylko na jakiś adres lub jakiś protokół, to czy inne przeglądarki nie pokazywałyby tych samych problemów podczas łączenia?)
Arjan

Arjan: Może Safari najpierw próbuje IPv4, dostaje „Odrzucone połączenie” i przestaje próbować? Właściwie nie wiem.
grawity

Podczas używania Listen 8080 lub Listen [::1]:8080 w Apache /etc/apache2/httpd.conf następnie sudo lsof -i :8080 pokazuje, że httpd używa tylko IPv6. Następnie żądanie 127.0.0.1:8080 w Safari lsof pokaż Safari używa IPv4, ale nadal łączy się dobrze. Użycie localhost: 8080 sprawia, że ​​Safari używa IPv6. Również Listen 127.0.0.1:8080 włącza tylko IPv4. Ale: Listen localhost:8080 sprawia httpd użyj BOTH IPv4 i IPv6. Mimo to: Safari obsługuje wszystko na moim komputerze Mac. (Zastanawiam się, czy @knorv ma problemy podczas używania Apache lub Pythona, a nie serwera (ów), których używa. Listen pomaga.)
Arjan

0

Nie odpowiem bezpośrednio na twoje pytanie, ale zaproponuję alternatywne rozwiązanie: użyj virtualhostx zarządzać lokalnym DNS. Zobacz także, jeśli MAMP nie jest dobrym rozwiązaniem dla twoich lokalnych potrzeb rozwojowych (jeśli o to ci chodzi).


Przepraszamy, ale to nie ma nic wspólnego z moim pytaniem. Nie używam nawet Apache.
knorv

0

Aby upewnić się, że nie jest to problem z twoim serwerem internetowym (jak @nagul zapytał: jakiego serwera używasz?), Na moim 10.6 Snow Leopard z IPv6 pozostawionym na automatyczny , a nawet z 127.0.0.1 testing.localhost dodane do mojego /etc/hosts, działa dobrze:

  • Zmienić Listen port wbudowanego Apache od 80 do 8080:
    sudo vi /etc/apache2/httpd.conf
  • Uruchom wbudowany Apache, włączając Preferencje systemowe, Udostępnianie, Udostępnianie w sieci. Lub uruchom ponownie, używając: sudo apachectl restart

Podobnie dla mnie nie ma problemów z użyciem:

  • python -m SimpleHTTPServer 8080

Wiem, że powiedziałeś, że nie używasz żadnego serwera proxy. W razie jakichkolwiek wątpliwości: najnowsze wersje Firefoksa pozwalają na wybór ustawień sieciowych specyficznych dla Firefoksa (które były jedyną opcją w starszych wersjach) i ustawień systemu. Safari zawsze używa ustawień systemu. Oczywiście dobre ustawienia proxy ignorowałyby adresy lokalne (domyślnie na moim Macu Pomiń ustawienia proxy dla tych hostów i Domeny: * .local, * .lan, 169.254 / 16 ). Mimo to można sprawdzić, czy Firefox nadal działa podczas korzystania z ustawień systemowych tak jak Safari. (Preferencje Firefoksa, Zaawansowane, zakładka Sieć, przycisk Ustawienia.)

(Wszystko w dziennikach serwera lub dziennikach konsoli? Która wersja systemu Mac OS?)


0

Jaki jest twój DNS? niektórzy dostawcy DNS, tacy jak OpenDNS, zależą od twoich ustawień, mogą uniemożliwić ci przejście gdzieś, więc przetestuj je całkowicie usuń DNS i upewnij się, że nie masz skonfigurowanego serwera proxy


Wątpię, czy DNS może być problemem, jeśli 127.0.0.1:8080 nie działa.
Arjan

-1

Wygląda na to, że serwer nie działa na IP i porcie, którego oczekujesz. co jest wyświetlane po uruchomieniu następującego w terminalu?

netstat -anp tcp | grep 8080

powinieneś zobaczyć linię odpowiadającą Twojemu serwerowi. jeśli nie pojawi się żadna linia, serwer może działać na innym porcie.


To sprawiłoby, że to dość dziwne, że inne przeglądarki działają dobrze. ;-)
Arjan
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.