Почему 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
- удаление истории просмотров, кеша, куки
Решение: в полной нелогичности:
Удалите доменные имена из списка доверенных сайтов!
- Откройте диалоговое окно Internet Options (просто спросите Cortana или используйте windowskey + s)
- Перейти на вкладку Безопасность
- Нажмите на зону надежных сайтов
- Нажмите кнопку Сайты
- Удалить проблемные доменные имена из списка доверенных сайтов
- Нажмите Применить, а затем закройте диалоговое окно.
- Откройте Edge (или перезапустите его, если он уже запущен)
- альт
Должен заметить, что, исходя из здравого смысла, решил, что причиной этой проблемы был не только тот факт, что сайт просто присутствовал в зоне "Надежные сайты". Я подумал, что это была какая-то обстановка в этой зоне. Итак, перед тем, как удалить доменные имена из списка "сайтов", я сделал все настройки точно соответствующими настройкам моей зоны Интернета (средний уровень безопасности, включите защищенный режим, не требуется проверка сервера для всех сайтов), и я также попытался любая другая комбинация, которую я мог найти. Не было никакой комбинации настроек безопасности зоны, которая работала. Единственным решением было просто полностью удалить домены из списка надежных сайтов. Самое смешное, что он работает в IE независимо от того, хотя это диалоговое окно настроек Интернета для IE. Это только кажется, влияет на Edge.
РЕДАКТИРОВАТЬ: Две недели спустя я изменяю свою конфигурацию, чтобы вместо файла 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-адреса, поэтому любой обходной путь должен использовать какой-то прокси. Вот несколько решений, которые я нашел работу:
Установить и запустить
fiddler
, Fiddler будет в основном перехватывать запрос из браузера, а затем перенаправлять его к месту назначения. Это самый простой обходной путь.Настройте прокси через встроенный инструмент Windows:
netsh
, Основные этапы включают назначение домена разработки доступному локальному частному IP-адресу в127.0.0.0/8
диапазон, затем сопоставление этого IP с IP-адресом веб-сервера в VPN. Смотрите пошаговые инструкции здесьИспользуйте функцию переадресации портов ssh для настройки прокси. Предполагая, что порт 80 доступен на локальном хосте, добавьте
127.0.0.1 d.somewebsite.com
в файл хоста, затем выполните следующую команду ssh:ssh -L localhost:80:localhost:80 user@devwebserver
, гдеdevwebserver
это имя хоста вашего веб-сервера разработки (скажем, в виртуальной машине или в бродячем экземпляре, или через VPN). Эта опция предполагает, что у вас есть доступ ssh к серверу разработки.
Ваше решение "удалить из доверенных сайтов" не сработало для меня, потому что мои локальные сайты не были на моих доверенных сайтах.
Но вы заставили меня посмотреть "Свойства обозревателя", и мне удалось заставить IIS работать на локальных сайтах для меня в Windows 10. Вот что я сделал:
- Откройте Свойства обозревателя и выберите "Локальная интрасеть"
- Нажмите на "Сайты"
- Нажмите на "Автоматическое обнаружение интрасети"
- Нажмите ОК. Попробуйте на локальном компьютере сайт в 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.
Нечто подобное случилось со мной, я просто сбросил сеть со страницы настроек сети и перезагрузил компьютер, и все снова заработало, как и раньше.