为什么在访问虚拟机上托管的 localhost iisexpress 站点时会收到 403

Geo*_*uer 7 windows parallels iis-express

所以在开始之前,我知道如何向网络开放 IISExpress,有很多关于此的文章,我什至写了一篇. 然而,这些方法确实有局限性 - 最明显的是需要添加绑定,我发现这些绑定是偶然的,更糟糕​​的是,会破坏任何基于主机名执行操作的代码。

我在 Parallels 中运行 Windows 10 的 OsX 上,本周早些时候,我想我应该尝试将 localhost 转发到虚拟机中,就像使用 docker 容器一样。

我已经很接近了,但我不知道最后一步。这是我所做的和我所看到的:

  1. 我暂时禁用了 Windows 上的防火墙
  2. 我将正确的端口(在本例中为 44300)转发到来宾虚拟机并重新启动它。
  3. 我通过命令行运行 iisexpress,以便可以看到完整的日志(我也通过 Visual Studio 尝试过)

我看到的是,当我localhost:44300从虚拟机内部点击时,我的网站加载良好并且记录了各种内容。

但是当我从主机上点击它时,我得到了

HTTP 错误 403。请求 URL 被禁止。

在这种情况下,iisexpress 没有记录任何内容。

但是,我知道请求以某种方式通过,因为如果我停止 iisexpress 并localhost:44300再次在主机上访问,我会得到标准

本地主机拒绝连接。ERR_CONNECTION_REFUSED

因此,iisexpress 是否在该端口上侦听的事实正在级联到主机虚拟机,但没有其他内容通过。

所以我有点不知所措 - 它几乎看起来有点像一个绑定的东西,但据 iisexpress 所知,由于端口转发,这个请求不是来自localhost?它如何判断它是否不是?由于缺乏日志消息,这听起来不太可能。而且我从来没有在提琴手中看到任何弹出的东西。

我想知道是否可能还有其他一些Windows 组件看到绑定到 44300 的东西,看到来自网络堆栈的请求,然后将其关闭。这是一件事吗?