Safari не может связаться с localhost (127.0.0.1)

29439
knorv

Я столкнулся с действительно странной проблемой Mac: Safari не может подключиться к localhost, тогда как все остальные приложения могут подключаться как обычно (Firefox, Chrome, ping и т. Д.).

Мой / etc / hosts - это стандартная настройка:

$ 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 

Вопрос: кто-нибудь еще сталкивался с этим? В чем может быть проблема?

Обновление № 1: у меня есть сервер, работающий на localhost: 8080. При доступе из Safari я получаю сообщение об ошибке «Safari не может подключиться к серверу». " HTTP: // локальный: 8080 / " работает безотказно в Firefox и Chrome.

Обновление № 2: та же проблема с « http://127.0.0.1:8080/ » - так что, похоже, это не связано с разрешением localhost до 127.0.0.1.

7
Есть ли вероятность того, что вы используете прокси-сервер? BinaryMisfit 14 лет назад 0
Диаго: Я не использую прокси-сервер. knorv 14 лет назад 0
Какой http-сервер работает на localhost? nagul 14 лет назад 1
Для архивов (см. Комментарии в ответе grawity), хотя это не решает вопрос выше: на моем Mac OS X 10.6, с `/ etc / hosts`, как указано выше, и IPv6 оставлен по умолчанию * автоматический *, запрашивая ** 127.0.0.1:8080 заставляет Safari использовать IPv4 ** (который все еще может подключаться к серверу, предоставляющему IPv6). Запрос ** localhost: 8080 заставляет Safari использовать IPv6 **. Arjan 14 лет назад 1
как насчет фырканья, чтобы увидеть разницу между запросами двух браузеров? mihi 14 лет назад 0
@knorv, расскажи нам, как ты это решил? Arjan 14 лет назад 0

8 ответов на вопрос

4
EvilChookie

Я думаю, что нам нужно немного больше информации, основанной на вашем вопросе.

Я предполагаю, что у вас есть веб-сервер, работающий для приема запросов? В настоящее время я этого не делаю, и Safari не будет подключаться к 127.0.0.1, потому что он «не может найти 127.0.0.1» - хотя я могу просто проверить его.

Итак, во-первых, вам нужно что-то запустить. Во-вторых, пытались ли вы подключиться к testing.localhost с Safari, просто добавьте, что две записи сбивают с толку Safari (это вполне возможно).

Когда вы говорите «приложения могут соединяться как обычно» с Chrome и Firefox, что вы видите? Веб-страницу, которую вы ожидаете увидеть? Другая ошибка?

редактировать

Я скачал и установил MAMP, и я не смог воспроизвести эту ошибку.

Некоторые темы форума предполагают, что проблема связана с разрешением IPv6. Я был бы склонен отключить IPv6 и удалить запись из файла hosts (временно только для тестирования)

  1. Apple Menu> Системные настройки
  2. сеть
  3. Выберите ваше сетевое подключение> Дополнительно
  4. Настроить IPv6> Выкл.

Применить, перезагрузить и посмотреть, как это происходит.

Спасибо за вклад. Я добавил уточняющее обновление в свой пост. knorv 14 лет назад 0
У меня такая же проблема. Я удалил строки IPv6 из / etc / hosts, и он работает. Спасибо за подсказку. tamasd 12 лет назад 1
2
ericvg

У меня было это раньше - использование http: //computername.local/ работало для меня, но я не уверен, почему это будет отличаться от простого использования имени в файле хоста.

проблема может заключаться в том, что соединение с 127.0.0.1 проходит через интерфейс lo0, тогда как computername.local не нужно ... Atmocreations 14 лет назад 0
1
Snark

Закомментируйте строку:

::1 localhost 

из вашего файла / etc / hosts. Очевидно, это будет вызвано поддержкой IPv6 в Safari.

Возможно, вы правы, но http://127.0.0.1:8080 тоже не работает, и я не думаю, что это будет зависеть от файла hosts. (Однако, как ответил EvilChookie: отключение IPV6 в настройках сети может привести к другому результату.) Arjan 14 лет назад 0
1
grawity

Некоторые приложения решают привязать только к одному интерфейсу - например, 192.168.13.37, если это адрес, присвоенный eth0 или тому подобное - вместо использования 0.0.0.0 для всех интерфейсов.

Другие могут использовать только адреса IPv6 ::1(localhost) или ::(все интерфейсы). Попробуйте http://[::1]:8080/в этом случае.

Интересно! `Python -m SimpleHTTPServer 8080` не поддерживает` http: // [:: 1]: 8080 / `, но встроенный Apache (Web Sharing) поддерживает. (Хотя, если приложение будет разрешать только какой-либо адрес или какой-либо протокол, не будут ли другие браузеры показывать такие же проблемы при подключении?) Arjan 14 лет назад 0
Арджан: Может быть, Safari сначала пробует IPv4, получает «Отказ в соединении» и прекращает попытки? Я на самом деле не знаю. grawity 14 лет назад 0
При использовании `Listen 8080` или` Listen [:: 1]: 8080` в Apache `/ etc / apache2 / httpd.conf`, тогда` sudo lsof -i: 8080` показывает, что `httpd` использует только IPv6. Затем, запрос 127.0.0.1:8080 в Safari заставляет `lsof` показывать, что Safari использует IPv4, но все равно подключается нормально. Использование localhost: 8080 заставляет Safari использовать IPv6. Аналогично `Listen 127.0.0.1: 8080` включает только IPv4. Но: `Listen localhost: 8080` заставляет` httpd` использовать ОБА IPv4 и IPv6. Тем не менее: Safari обрабатывает все на моем Mac. (Интересно, есть ли проблемы у @knorv при использовании Apache или Python, а не на серверах, которые он использует. И помогает ли изменение чего-то вроде `Listen`.) Arjan 14 лет назад 0
0
pixeline

Я не собираюсь отвечать на ваш вопрос напрямую, но предлагаю альтернативное решение: используйте virtualhostx для управления локальным DNS. Смотрите также, если MAMP не является хорошим решением для ваших нужд местного развития (если это то, что вам нужно).

Извините, но это совершенно не связано с моим вопросом. Я даже не использую Apache. knorv 14 лет назад 0
0
Arjan

Чтобы убедиться, что это не проблема с вашим веб-сервером (как @nagul спросил: каким сервером вы пользуетесь?), На моем 10.6 Snow Leopard с IPv6, оставленным в автоматическом режиме, и даже с 127.0.0.1 testing.localhostдобавленным на моем /etc/hosts, следующее работает нормально:

  • Измените Listenпорт встроенного Apache с 80 на 8080:
    sudo vi /etc/apache2/httpd.conf
  • Запустите встроенный Apache, включив Системные настройки, Общий доступ, Общий веб-доступ. Или перезапустите, используя:sudo apachectl restart

Кроме того, для меня нет проблем с использованием:

  • python -m SimpleHTTPServer 8080

Я знаю, что вы заявили, что не используете прокси. На всякий случай есть какие-либо сомнения: последние версии Firefox позволяют выбирать между сетевыми настройками Firefox (которые были единственным вариантом в старых версиях) и системными настройками. Safari всегда использует системные настройки. Конечно, хорошие настройки прокси будут игнорировать локальные адреса (по умолчанию на моем Mac настройки обхода прокси для этих хостов и доменов: * .local, * .lan, 169.254 / 16 ). Тем не менее, можно проверить, работает ли Firefox, когда он использует системные настройки, такие как Safari. (Настройки Firefox, Дополнительно, вкладка Сеть, кнопка Настройки.)

(Что-нибудь в журналах сервера или журналах консоли? Какая версия Mac OS?)

0
alexus

Какой у тебя DNS? Некоторые DNS-провайдеры, такие как OpenDNS, зависят от ваших настроек, которые могут помешать вам куда-то пойти, поэтому для его проверки полностью удалите DNS и убедитесь, что у вас не настроен прокси

Я сомневаюсь, что DNS может быть проблемой, если http://127.0.0.1:8080 не работает. Arjan 14 лет назад 0
-1
aaron

Похоже, ваш сервер может не работать на IP и порт, который вы ожидаете. что выводится при запуске следующего в терминале?

netstat -anp tcp | grep 8080 

Вы должны увидеть строку, соответствующую вашему серверу. если строка не отображается, возможно, ваш сервер работает на другом порту.

Это сделало бы довольно удивительным, что другие браузеры работают нормально. ;-) Arjan 14 лет назад 0

Похожие вопросы