Почему Microsoft Edge открывает некоторые локальные веб-сайты, но не другие, где имя домена перенаправляется на 127.0.0.1 в файле hosts

Как и многие программисты, я тестирую сайты локально.
Я использую файл hosts для сопоставления доменных имен с моим локальным ip (127.0.0.1).

Я использую квалифицированные доменные имена, обычно с поддоменом "d" (для "разработки").

Например:

d.somewebsite.com 
d.anotherwebsite.com 
and so on...

В Microsoft edge большинство веб-сайтов работают. Однако пара из них этого не делает. Нет ничего особенного или странного в доменных именах, которые не будут работать. Просто простой d.someletters.com,

Они отлично работают в Chrome, IE и Firefox.

В Edge я получаю сообщение об ошибке: "Хм, мы не можем открыть эту страницу".

Сначала я думал, что это не разрешение IP. Однако, когда я сделал опечатку на другом не связанном URL, я понял, что запросы, которые не маршрутизируются файлом hosts, отправляются моему провайдеру для разрешения. Если мой интернет-провайдер не может решить эту проблему, он отправляет эту специальную страницу результатов поиска с предложениями о том, что вы, возможно, пытаетесь найти. Ну, когда я захожу в свой локальный домен, я не получаю эту страницу от моего провайдера. Я получаю вышеупомянутую ошибку прямо с края.

Таким образом, мне кажется, что Edge правильно разрешает домен, иначе он был бы отправлен в DNS моего провайдера.

Итак, я думаю, что, возможно, Edge просто не сможет подключиться к локальной машине. Но, как я уже сказал, некоторые из этих локальных доменов работают нормально. Кроме того, использование 127.0.0.1 непосредственно в Edge также работает. Именно эта пара доменных имен создает мне проблему. И только в Edge (все остальные браузеры работают) Есть идеи?

Веб-сервер Apache2 для Windows (xampp), если это имеет значение.

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

РЕДАКТИРОВАТЬ: я больше не использую файл hosts. У меня dnsmasq работает на одном из моих Linux-боксов, и я использую его для DNS вместо хостов. Также больше не использую loopback (очевидно, поскольку DNS сейчас находится в другом окне), я использую внутренний частный IP-адрес (192.168...). Та же проблема.

11 ответов

  • Ваша сеть может блокировать петлю в качестве меры безопасности в Windows 10.

  • Откройте командную строку от имени администратора и запустите эту команду, чтобы исключить Edge из обратной петли:

    CheckNetIsolation LoopbackExempt -a -n="Microsoft.MicrosoftEdge_8wekyb3d8bbwe"
    

Это официально задокументировано здесь (перейдите по ссылке, затем нажмите "Как я могу отладить localhost?" Вверху страницы):

https://developer.microsoft.com/en-us/microsoft-edge/platform/faq/

Здесь есть запись в блоге, в которой содержится более подробная информация: https://blogs.msdn.microsoft.com/msgulfcommunity/2015/07/01/how-to-debug-localhost-on-microsoft-edge/

Я (думал, что я) решил это!

Вещи, которые не работали:

  • Внесение изменений в настройки совместимости IE или списки совместимости Windows
  • Использование полных доменных имен
  • Использование IP-адреса, отличного от loopback
  • используя http против https
  • удалить все javascript и межсайтовые скрипты / ресурсы с веб-страницы
  • отметьте / снимите флажок в about: flags для разрешения обратной связи localhost или использования настроек совместимости
  • удаление / добавление / редактирование записей в TabProcConfig реестра Windows
  • удаление истории просмотров, кеша, куки

Решение: в полной нелогичности:

Удалите доменные имена из списка доверенных сайтов!

  1. Откройте диалоговое окно Internet Options (просто спросите Cortana или используйте windowskey + s)
  2. Перейти на вкладку Безопасность
  3. Нажмите на зону надежных сайтов
  4. Нажмите кнопку Сайты
  5. Удалить проблемные доменные имена из списка доверенных сайтов
  6. Нажмите Применить, а затем закройте диалоговое окно.
  7. Откройте Edge (или перезапустите его, если он уже запущен)
  8. альт

Должен заметить, что, исходя из здравого смысла, решил, что причиной этой проблемы был не только тот факт, что сайт просто присутствовал в зоне "Надежные сайты". Я подумал, что это была какая-то обстановка в этой зоне. Итак, перед тем, как удалить доменные имена из списка "сайтов", я сделал все настройки точно соответствующими настройкам моей зоны Интернета (средний уровень безопасности, включите защищенный режим, не требуется проверка сервера для всех сайтов), и я также попытался любая другая комбинация, которую я мог найти. Не было никакой комбинации настроек безопасности зоны, которая работала. Единственным решением было просто полностью удалить домены из списка надежных сайтов. Самое смешное, что он работает в IE независимо от того, хотя это диалоговое окно настроек Интернета для IE. Это только кажется, влияет на Edge.

Windows 10 Свойства обозревателя

Удалить надежные сайты из доверенной зоны

РЕДАКТИРОВАТЬ: Две недели спустя я изменяю свою конфигурацию, чтобы вместо файла hosts использовать dnsmasq на локальной машине Linux и использовать его для DNS. Я не уверен, что это произошло сразу, но в какой-то момент Эдж перестал работать снова! У меня уже был установлен флажок "allow loopback" about: flags, поэтому я не ожидал, что исправление CheckNetIsolation сработает. Но это так. Версия Edge 20.10240.16384.0. Я использовал исправление из Не могу открыть localhost в Microsoft Edge (Project Spartan) в Windows 10 Preview.

РЕДАКТИРОВАТЬ #2 Пару месяцев спустя, и у Эджа снова возникла эта проблема. Я попробовал оба предыдущих решения (и другие), и ни одно из них больше не работает для меня. Я оставляю этот ответ, потому что я предполагаю, что у меня возникли две отдельные проблемы.

Edge не поддерживает VPN IP-адреса, поэтому любой обходной путь должен использовать какой-то прокси. Вот несколько решений, которые я нашел работу:

  1. Установить и запустить fiddler, Fiddler будет в основном перехватывать запрос из браузера, а затем перенаправлять его к месту назначения. Это самый простой обходной путь.

  2. Настройте прокси через встроенный инструмент Windows: netsh, Основные этапы включают назначение домена разработки доступному локальному частному IP-адресу в 127.0.0.0/8 диапазон, затем сопоставление этого IP с IP-адресом веб-сервера в VPN. Смотрите пошаговые инструкции здесь

  3. Используйте функцию переадресации портов ssh для настройки прокси. Предполагая, что порт 80 доступен на локальном хосте, добавьте 127.0.0.1 d.somewebsite.com в файл хоста, затем выполните следующую команду ssh: ssh -L localhost:80:localhost:80 user@devwebserver, где devwebserver это имя хоста вашего веб-сервера разработки (скажем, в виртуальной машине или в бродячем экземпляре, или через VPN). Эта опция предполагает, что у вас есть доступ ssh к серверу разработки.

Ваше решение "удалить из доверенных сайтов" не сработало для меня, потому что мои локальные сайты не были на моих доверенных сайтах.

Но вы заставили меня посмотреть "Свойства обозревателя", и мне удалось заставить IIS работать на локальных сайтах для меня в Windows 10. Вот что я сделал:

  1. Откройте Свойства обозревателя и выберите "Локальная интрасеть"

  1. Нажмите на "Сайты"

  1. Нажмите на "Автоматическое обнаружение интрасети"

  1. Нажмите ОК. Попробуйте на локальном компьютере сайт в Microsoft Edge, и теперь он должен работать.

Может не относиться к вашей ситуации, но тем не менее. Моя установка была следующей. Страница адреса публичного пространства (Интернет) пыталась загрузить страницу с адресом частного пространства (интрасеть) в iframe, и Edge отказывался загружать страницу интрасети с тем же сообщением "Хм, мы не можем добраться до этой страницы", и с "Ошибка SEC7117" в консоли отладки. Оказывается, Edge не нравится смешивать зоны Интернета / интрасети (причины этого см. В блоге " Понимание блога в расширенном защищенном режиме"). Edge запускает вкладки в отдельных AppContainer, а сетевые ограничения AppContainer зависят от конфигурации вашей сети.

Мое решение состояло в том, чтобы вынуть сервер, на котором размещалась рассматриваемая страница интрасети, из доменной сети, назначив ему второй IP-адрес частного пространства, и создать вторую запись DNS для этого IP-адреса. Сервер в конечном итоге имеет 2 IP-адреса: один в доменной сети и один альтернативный и 2 разных DNS-записи. Затем Edge указывает на альтернативный URL и начинает нормально загружать страницу интрасети. Похоже, что если IP-маски ПК и URL-адрес страницы не совпадают, Edge будет загружать страницу.

В сообщении блога, о котором я упоминал, содержится информация о блокировке Loopback для localhost и отсутствии возможности privateNetworkClientServer в IE. Насколько я могу судить, вся эта информация относится к Edge.

Исходя из ваших правок, вы обращаетесь к сайту по адресу 192.168.0.0/16, а не по 127.0.0.1. Я предполагаю, что у вас возникла проблема с поведением браузера Edge по-разному в зависимости от интерфейса, используемого для доступа. сайт. Другие браузеры, которые я пробовал, не ведут себя таким образом.

В моей среде у меня была настройка сети только для хоста Virtualbox, и NdisDeviceType был равен 1. Edge позволял бы мне переходить на сайты через этот интерфейс только после того, как я изменил NdisDeviceType на 0. Ключ реестра, который вам нужен:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\XXXX

Вместо XXXX вам нужен правильный ключ для вашего интерфейса, который я определил из "маршрута печати" и вычел 1. Для меня это был "0016".

Значение для изменения называется *NdisDeviceType, (Это буквальная звездочка.) Я изменил его с 0 на 1, и пришлось перезагрузить Windows, чтобы заметить это изменение.

Мой ответ был получен из сообщения "Jani L" от 3 октября 2017 года. Я также опубликовал это решение более подробно на другой вопрос stackru. Также см. Билет Virtualbox 15565.

Когда это происходит со мной, я могу найти запись домена в разделе реестра ниже, который соответствует домену. Когда я убираю это, все работает некоторое время... Я не знаю почему, но Edge добавит его обратно в конце концов.

Компьютер \HKEY_USERS\S-1-5-21-964789662-521690395-1734141374-1111\ Программное обеспечение \ Классы \ Локальные настройки \ Программное обеспечение \Microsoft\Windows\CurrentVersion\AppContainer\Storage\microsoft.microsoftedge_8wekyb3d8bbwe\MicrosoftEdge\TabProcConfig

Ни одно из других решений не помогло мне. Оказывается, моя проблема связана с VPN. Microsoft Edge по-прежнему не поддерживает IP-адреса VPN, в то время как Internet Explorer 11 поддерживает. Впечатляет, что это все еще проблема по состоянию на май 2016 года.

Дополнительная информация: https://social.technet.microsoft.com/Forums/en-US/b3a687ae-345d-4c3f-9070-184b33fb1fc6/microsoft-edge-cant-access-vpn-ip-address-but-ie-11-can?forum=win10itprogeneral

В настоящее время Microsoft Edge, похоже, плохо работает с VPN. А механизм подключения к Интернету из Microsoft Edge немного отличается от Internet Explorer 11 и других браузеров для настольных компьютеров, которые я не могу объяснить однозначно, так как мало что знаю об этом.

Поэтому, исходя из текущей ситуации, используйте вместо этого Internet Explorer 11.

В моем случае смена типа сети с частной на публичную сделала свое дело. Это также воспроизводимо, и при смене типа сети надежно изменяет состояние с "работающего" на следующее: Http failure response for (unknown url): 0 Unknown Error

Для меня я выбрал "Свойства обозревателя" (панель управления), затем "Безопасность", затем выбрал локальную интрасеть и поставил галочку в поле "Автоматически определять сеть интрасети". Это скрыло вложенные параметры ниже, и Edge немедленно начал использовать мой файл hosts.

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

Другие вопросы по тегам