Я использую OS X 10.8.5 и Chrome 30.
Я добавил 127.0.0.1 youtube.com
в свой /etc/hosts
файл так, что теперь он содержит это:
# 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
Когда я запускаю команду, traceroute youtube.com
я получаю ожидаемые результаты (youtube.com разрешен до 127.0.0.1):
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
Однако, когда я набираю youtube.com в Chrome, мой браузер устанавливает соединение не с 127.0.0.1, а с «обычным» IP-адресом для YouTube. Я бы ожидал, что Chrome разрешит youtube.com до 127.0.0.1.
У меня Chrome настроен на использование настроек прокси моей системы. В OS X, когда я захожу в «Системные настройки»> «Сеть»> «Дополнительно ...»> «Прокси», я выбираю «Автоматическое обнаружение прокси».
Почему Chrome, похоже, игнорирует мой /etc/hosts
файл?
macos
networking
google-chrome
dns
Джонатан
источник
источник
Ответы:
Попробуйте добавить
www.youtube.com
в ваш файл hosts.youtube.com
перенаправлен на постоянный адресwww.youtube.com
, поэтому, пока вы посещали егоyoutube.com
один раз, ваш браузер кэширует этот ответ и перенаправляет вас наwww.youtube.com
. Этот адрес отсутствует в вашем файле hosts, поэтому chrome логически разрешает его правильно.источник
www
не работает для меня. Даже после очистки всех данных моего браузера и очистки моего DNS. Возможно, это антифишинговая мера, запеченная в Chrome?Google Chrome игнорирует ваш файл hosts и выполняет фактический поиск DNS (несмотря на то, что другие могут подумать,
/etc/hosts
это не часть DNS, а то, что использовалось до DNS). В то время как Google Chrome должен обрабатывать записи файла хостов, он этого не делает. Файл hosts, являющийся альтернативой DNS, будет прочитан, когда DNS-сервер недоступен (например, если вы отключили сетевое соединение).Вы можете проверить это, добавив «127.0.0.1 foobar.dev» в ваш файл hosts, затем включив wireshark и наблюдая за вашим сетевым интерфейсом. Откройте Chrome, вставьте
http://foobar.dev/
адресную строку и начинайте. Вы увидите DNS-запрос в Wireshark, что-то вроде:FWIW, Google DNS возвращает 127.0.53.53 для foobar.dev.
Обходным путем будет использование HostAdmin, который является более старым расширением Chrome, которое заставляет Chrome использовать хосты. Однако более новые версии Chrome (> 38, соответственно) больше не поддерживают его.
источник
/etc/hosts
файл в OS X. По крайней мере, Chrome v43 в OS X 10.10.3.Я исправил эту проблему следующим образом: Отключите «Защитить себя и свое устройство от опасных сайтов» в расширенных настройках Chrome.
Встроенная в Chrome «защита» включает в себя проверку домена на соответствие его собственному DNS и обход в обход определенных типов записей хоста, которые он считает «подозрительными», или записей для существующих сайтов, которые переопределяются, что означает, что большинство пользовательских записей хоста игнорируются. Особенно записи * .dev и * .local, используемые для разработки.
Отключение этого вопроса решило проблему в 100% случаев для меня. Это месяцами сводило меня с ума, когда я занимался местным развитием, и я нигде не мог найти ответ, перечисленный выше, все просто говорили, что этого не может быть. Оказывается, это был простой переключатель в расширенных настройках. Надеюсь, это поможет вам, ура.
источник
Localhost - это соглашение для адреса 127.0.0.1, который является внутренним адресом для tcp / ip, однако Chrome не использует / etc / hosts для определения адреса, он использует DNS-сервер, поэтому любой адрес не исходит от вашего / etc / hosts, но с DNS-сервера, если он использует / etc / hosts, он должен будет содержать полные имена хостов www для решения любого адреса.
Надеюсь это поможет.
источник
/etc/hosts
переопределяет любые DNS-серверы. Да, если вы используете только/etc/hosts
, он должен содержать все доменные имена, но большинство настроек также включают DNS-серверы. Если Chrome просто просит ОС разрешить имя домена, как он должен , в/etc/hosts
первую очередь проверяется, и если она не содержит записи, то DNS запрос будет разослан./etc/hosts
следует переопределить и запрос DNS, но это не так с Google Chrome. Он преформирует свои собственные DNS-запросы, несмотря на то, что может быть в файле hosts. Это легко продемонстрировать. Это конкретно проблема для местного развития с использованием.dev
ДВУ.Я наткнулся на этот вопрос, подумав, что
hosts
файл не работает в Chrome для macOS для.dev
поддельных доменов, которые я использую для разработки.На самом деле это делает работу, по крайней мере , на Chrome 77.
Проблема не в том, что домен не найден, а в том, что все .dev теперь автоматически перенаправляются на https :
Если дважды щелкнуть имя домена, вы увидите виновника:
Теперь, когда Google сломал наш
.dev
, в качестве решения, ссылка выше предлагает перейти к другому TLD для разработки, например.test
или.localhost
.источник