Браузер из Windows Sandbox не может получить доступ к локальному хосту

Я запускаю веб-сервер на своем компьютере с Windows через порт 4200. Если я открою браузер, я смогу связаться с этим веб-сервером, перейдя на

Я хочу подключиться к веб-серверу из песочницы Windows . Моя конфигурация песочницы позволяет работать в сети, и браузер в песочнице может нормально просматривать Интернет. Однако он не может связаться с моим веб-сервером, перейдя на localhost:4200. Я предполагаю, что это связано с тем, что localhost относится к самой песочнице.

Вот моя конфигурация wsb. Опять же, доступ в Интернет работает.

      <Configuration>
<MappedFolders>
   <MappedFolder>
     <HostFolder>C:\Users\JohnDoe\Documents\Sandbox\Share</HostFolder>
     <ReadOnly>false</ReadOnly>
   </MappedFolder>
</MappedFolders>
</Configuration>

Как я могу получить доступ к своему веб-серверу на хост-компьютере из моего браузера в песочнице?

2 ответа

Localhost песочницы отличается от вашего хоста. Получите «адаптер Ethernet vEthernet (коммутатор по умолчанию):» IPv4-адрес с хоста и используйте его в браузере песочницы.

Пример: из песочницы я могу пропинговать хост:

      Pinging 172.20.160.1 with 32 bytes of data:
Reply from 172.20.160.1: bytes=32 time<1ms TTL=128
Reply from 172.20.160.1: bytes=32 time<1ms TTL=128
Reply from 172.20.160.1: bytes=32 time<1ms TTL=128
Reply from 172.20.160.1: bytes=32 time<1ms TTL=128

Я мог получить доступ к моему локальному приложению из браузера песочницы, просматривая http://172.20.160.1 :<app_port>

Здесь есть пара проблем.

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

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

Изменение привязки IP-адреса вашего веб-сервера зависит от платформы сервера. Если бы это был проект .net, использующий Kestrel или IIS, вы могли бы проверить в папке свойств вашего проекта файл с именем «launchSettings.json», и вы заметите, что по умолчанию адреса, которые прослушивает сервер(ы), — «localhost». ". Обычно это нормально, но если вы пытаетесь подключиться к нему из песочницы, вам нужно будет прослушивать адрес, до которого может добраться песочница.

В вашей конфигурации, вероятно, написано что-то вроде «https://localhost:4200». Большинству серверов будет достаточно, если вы скажете им прослушивать адрес 0.0.0.0, что означает любой адрес, поэтому измените запись на «https://0.0.0.0:4200». Вы можете просто поместить это в файл launchSettings.json, чтобы все заработало, но, скорее всего, вы захотите сохранить это довольно ограниченным в долгосрочной перспективе. В этом случае вы можете добавить конкретный адрес хоста, используемый виртуальным коммутатором.

Чтобы получить этот адрес, как описано в другом ответе, вы получаете IP-адрес хоста, к которому может подключиться ваша песочница, либо просмотрев хост с помощью ipconfig, чтобы найти адрес адаптера с именем «Адаптер Ethernet vEthernet (переключатель по умолчанию)», либо посмотрите адрес шлюза в песочнице в разделе ipconfig. То же/То же самое.

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

Теперь вы сможете перейти к этому адресу хоста с самого хоста , и он должен ответить нормально. ОБРАТИТЕ ВНИМАНИЕ, что вы, вероятно, получите ошибку сертификата, но, по крайней мере, вы знаете, что сервер прослушивает.

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

  1. Временно отключите брандмауэр на хосте.

  2. Откройте «Безопасность Windows», нажмите «Брандмауэр и защита сети», затем «Разрешить приложение через брандмауэр», найдите уже существующую запись для приложения, которое вы используете, и откройте его в общедоступных сетях. ОБРАТИТЕ ВНИМАНИЕ, что это может быть не очень «прилипчиво», поскольку запись приложения может меняться со временем.

  3. Откройте «Дополнительные настройки» в разделе «Брандмауэр и защита сети». Создайте новое правило, возможно, сделайте это по порту и укажите порт (4200), который прослушивает ваш сервер. Вы можете ослабить или ужесточить это по своему усмотрению с помощью всевозможных других параметров. Идея состоит в том, что вы хотите тратить как можно меньше времени на беспокойство о том, работает ли это правило (достаточно открытое), но не беспокоиться о том, что кто-то в локальной сети заденет вашу систему (достаточно закрытое). Экспериментируйте, пока не найдете подходящий уровень ограничения, который вам удобен.

Как уже упоминалось, некоторые модели поведения теперь изменятся. Ошибка сертификата одна. Если вы тестируете что-то, настроенное на использование внешнего поставщика удостоверений, вам также необходимо учитывать, что ваша конечная точка изменилась с «localhost» на рассматриваемый адрес. Но если вы получаете ошибки из-за подобных вещей, вы уже решили свои проблемы с сетью.

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