我在Windows机器上的端口4200上运行Web服务器。如果打开浏览器,我可以通过转到localhost:4200
与该Web服务器通信
我想从the Windows Sandbox内连接到Web服务器。我的沙箱配置允许联网,沙箱中的浏览器可以正常浏览Internet。但是,它无法通过转到localhost:4200
访问我的Web服务器。我假设这是因为localhost引用了沙箱本身。
这是我的wsb配置。同样,互联网接入工作。
<Configuration>
<MappedFolders>
<MappedFolder>
<HostFolder>C:\Users\JohnDoe\Documents\Sandbox\Share</HostFolder>
<ReadOnly>false</ReadOnly>
</MappedFolder>
</MappedFolders>
</Configuration>
如何从沙箱中的浏览器访问主机上的Web服务器?
2条答案
按热度按时间zujrkrfu1#
沙盒localhost与您的主机不同。从主机获取“Ethernet adapter vEthernet(Default Switch):“IPv4 Address并在沙盒浏览器中使用它
例如:在沙箱中,我可以ping主机:
我可以通过浏览http://172.20.160.1从沙盒浏览器访问我的localhost应用程序:<app_port>
kq0g1dla2#
这里有几个问题。
首先,您的Web服务器需要监听沙盒可以访问的地址(默认情况下可能不是)。
其次,您服务器上的防火墙需要允许来自沙盒使用的地址空间的入站连接。
更改Web服务器的IP地址绑定因服务器平台而异。如果这是一个使用Kestrel或IIS的.net项目,您可能会在项目的properties文件夹中检查名为“launchSettings.json”的文件,并且您会注意到默认情况下服务器的地址(s)侦听的是“localhost”。这通常没问题,但如果您试图从沙箱中访问它,则需要侦听沙箱可以访问的地址。
您的配置可能会显示类似“https://localhost:4200”的内容。大多数服务器都会很好地告诉它监听0.0.0.0,这意味着任何地址,因此将条目更改为“https://0.0.0.0:4200“。您可以将其放入launchSettings.json以使其工作,但可能您希望长期保持这种相当严格的限制。在这种情况下,您可以添加虚拟交换机使用的特定主机地址。
要获取该地址,如另一个答案中所述,您可以通过使用ipconfig查找主机以查找名为“Ethernet adapter vEthernet(Default Switch)”的适配器的地址,或者在ipconfig. Same/Same下查看沙箱上的网关地址,来获取沙箱可以到达的主机的IP地址。
你希望你的服务器监听这个地址,默认情况下它可能不是。
现在你应该可以从主机本身浏览到那个主机地址了,它应该会很好地回复你。注意,你可能会得到一个证书错误,但是至少你知道服务器正在监听。
现在尝试从沙箱中命中相同的地址。如果您无法从沙箱中命中,则此时只是防火墙问题。一如既往,有几种方法可以解决此问题,从简单和不安全到更复杂和更安全:
1.暂时禁用主机上的防火墙。
1.打开Windows安全,点击防火墙和网络保护,然后“允许应用程序通过防火墙”,找到您正在运行的应用程序的预先存在的条目,并将其打开到公共网络。请注意,这可能不是非常“粘滞”,因为应用程序条目可以随着时间的推移而改变。
1.打开防火墙和网络保护下的高级设置。创建一个新的规则,也许可以通过端口并指定端口(4200),你可以放松或收紧这个你的心的内容与各种其他参数。这个想法是,你想花尽可能少的时间担心这个规则是否工作(足够开放),但不必担心局域网上的人攻击你的系统(足够封闭)。
如前所述,一些行为现在将发生变化。证书错误是其中之一。如果您正在测试配置为使用外部身份提供程序的东西,您还需要考虑您的端点已从“localhost”更改为有问题的地址。但如果您从此类事情中获得错误,您已经解决了网络问题。