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.
/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 .Odpowiedzi:
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)
Zastosuj, uruchom ponownie i zobacz, jak to działa.
źródło
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.
źródło
Skomentuj linię:
z pliku / etc / hosts. Najwyraźniej byłoby to spowodowane obsługą IPv6 w Safari.
źródło
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.źródło
python -m SimpleHTTPServer 8080
nie wspierahttp://[::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?)Listen 8080
lubListen [::1]:8080
w Apache/etc/apache2/httpd.conf
następniesudo lsof -i :8080
pokazuje, żehttpd
używa tylko IPv6. Następnie żądanie 127.0.0.1:8080 w Safarilsof
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
sprawiahttpd
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.)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).
źródło
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:Listen
port wbudowanego Apache od 80 do 8080:sudo vi /etc/apache2/httpd.conf
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?)
źródło
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
źródło
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?
powinieneś zobaczyć linię odpowiadającą Twojemu serwerowi. jeśli nie pojawi się żadna linia, serwer może działać na innym porcie.
źródło