Почему localhost не работает в Windows 8.1, а 127.0.0.1 работает?


1

У меня HTTP-сервер работает на порту 9876.

Я помещаю http://127.0.0.1:9876/в Chrome и страница загружается мгновенно.

Я помещаю http://localhost:9876/в Chrome и страница никогда не загружается.

Я никогда не изменял C: \ Windows \ System32 \ drivers \ etc \ hosts.

Каждая строка в файле hosts закомментирована.

Следующие строки существуют в файле и могут иметь отношение:

# localhost name resolution is handled within DNS itself.
#   127.0.0.1       localhost

Как я уже сказал, я не добавил эти строки сам. Я не редактировал файл hosts.

Очевидно, я могу раскомментировать вторую строку, чтобы заставить localhost работать. Но зачем это нужно, если первая строка верна? Microsoft написала первую строку? Похоже, они говорят мне, что localhost будет работать без определения.


Ваш HTTP-сервер также прослушивает ::1или только IPv4?
Jscott

1
Просто ipv4. , ,
cja

раскомментируйте его, и вы получите свою localhostспину)
alexus

Первая строка предполагает, что вы используете DNS на своем компьютере, и что localhost будет преобразовываться в ваш локальный IP-адрес.
Стив Батлер

@ SteveButler Хорошо, вставь это в ответ, и я приму это. Также, можете ли вы объяснить, почему MS решила отключить localhost по умолчанию?
ЦСП

Ответы:


0

Я не могу найти надежную документацию, но она появляется, так как в Windows 7 они изменили разрешение localhost на DNS. Я предполагаю, что служба DNS-клиента на самом деле возвращает localhost, когда вы выполняете операцию, потому что ваш DNS-сервер, где бы он ни находился, вероятно, не разрешит localhost. Вы всегда можете установить файл hosts, и он должен переопределить то, что дает вам DNS-клиент.

Вот, по крайней мере, доказательство того, что он изменился со времен Windows 7:

http://support.microsoft.com/kb/972034

Я предполагаю, что это служба DNS, потому что в моем окне Win8 эти строки закомментированы, и все же localhost разрешается обратно в :: 1, и, конечно, мой DNS не настроен для IPv6, и даже если бы это было так, он не будет разрешить localhost.


1

Если вы удалите второе '#', localhost также должен работать.

из

# 127.0.0.1     localhost

в

127.0.0.1     localhost

Извините - я понимаю, что не объяснил свое понимание. Пожалуйста, смотрите новый заключительный абзац в вопросе.
cja

«127.0.0.1», вероятно, (жестко) закодировано в стек TCP / IP, но не «localhost»
Poliquin

Что означает комментарий? Это означает, что localhost работает без записи в файле hosts
cja

@cja Да, это должно работать без этой записи в файле localhost. Не уверен, почему это не для вас.
Майкл

0

Комментарий говорит о реализации DNS в самой Windows, а не о реализации DNS в Chrome.


Это то, что я думал
cja

0

Да, Microsoft действительно сделала это изменение. Очевидно, это связано с тем, что на компьютере с IP6 (будет более распространенным в будущем) запись по умолчанию разрешения localhost на IP4-адрес приведет к тому, что он не будет работать. Поэтому они переместили эту логику в сам распознаватель DNS, где их можно было отключить независимо.

Источник: https://serverfault.com/a/9665/104049


-1

Обновление до Windows 8.1 удалит некоторые или, возможно, все добавленные сервисы ... т.е. Apache, MySQL. Просто посмотрите на сервисы, запущенные на вашем компьютере, и вы заметите, что все ваши веб-сервисы УХОДИЛИ.


Добро пожаловать в Супер пользователя! Это не отвечает на вопрос OP - нет никаких признаков того, что это изменилось как часть обновления.
бертиб

Кроме того, вопрос явно говорит о том http://127.0.0.1:9876/, что работает, поэтому, очевидно, локальный сервис все еще работает.
Скотт
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.