我有一个本地测试/开发服务器(当然是HTTP),监听端口8000。

我在Linux上工作,所以为了在Internet Explorer 6、7、8等上测试该页面,我使用VirtualBox运行一个虚拟机;我还需要看看Firefox在windows环境下的外观(例如字体不同)。

在我的真实机器中,我只需使用URL打开网站http://localhost:8000,如何从虚拟机寻址此本地主机?

现在我的解决方法是使用IP地址。有更好的主意吗?


当前回答

无法将请求重新定向到VM中的localhost到主机的localhost,现在已将其烘焙到Windows中(https://www.rfc-editor.org/rfc/rfc6761#section-6.3),包括VMhttps://developer.microsoft.com/en-us/microsoft-edge/tools/vms/

为了安全保证,Microsoft现在防止主机文件条目将localhost的地址重写为环回地址以外的任何地址::1。因此,在VM的主机文件中添加一行,例如

10.0.2.2 localhost

将被忽略。

有两种方法(据我所知)可以覆盖这一点:

使用NETSH将代理传输到主机netsh interface portproxy add v4tov4 listenaddress=127.0.0.1 listenport=8000 connectaddress=10.0.2.2 connectport=8000

(其中10.0.2.2是VM上的默认网关,8000是要解析到主机上的端口。)

设置IIS以执行应用程序请求路由,然后将localhost:port的请求重写为hostIP:port

https://learn.microsoft.com/en-us/iis/extensions/configuring-application-request-routing-arr/creating-a-forward-proxy-using-application-request-routing

其他回答

如果您使用Virtual Box,您可以使用一行代码将Mac OSX(我认为是Linux)连接到虚拟windows机器-->我建议在终端中运行该程序之前停止该程序。

VBoxManage修改“您的VM名称”--natdnsostresolver1

我会注意到这是来自我正在运行的Dinghy文档,但它是一个虚拟盒子命令,所以只要它的虚拟盒子,它就不应该真正关心你使用什么

检查您是否可以使用以下命令访问父计算机:ipconfig(获取您的ip地址)

ping<ip>或telnet<ip><port>

如果无法访问端口,请尝试在父防火墙中添加允许本地端口的新入站规则。

然后我可以访问http://<ip>:<port>

获取运行Apache的计算机的IP(inet-addr:in ifconfig),并在虚拟机浏览器地址栏中输入。

几件事情的组合最终使我的工作顺利进行。在macosx上运行flask服务器。

在我的windows VM中,我编辑了主机文件:

以管理员身份运行记事本打开C:\windows\system32\drivers\etc\hosts添加此条目:10.0.2.2外部

在VirtualBox中关闭VM和Mac:

转到VirtualBox>首选项>网络>仅主机网络>>添加网络vboxnet1转至My_VM>设置>网络>适配器1。选择Enable Network Adapter(启用网络适配器)并将Attached to(连接到)设置为Bridged Adapter(桥接适配器)。然后将“高级”>“混杂模式:”设置为“允许虚拟机”。单击“确定”转至My_VM>设置>网络>适配器1。设置附加到:返回NAT。

然后我转到适配器2

将Attached to:设置为Host only Adapter,然后选择先前添加的网络vboxnet1。

我在我的mac上启动了我的服务器,运行在127.0.0.1:5000上,现在可以在我的vm上访问http://10.0.2.2:5000

伙计,在mac上测试IE简直是噩梦。怎么没有更简单的方法?

在上面所述的virtual Box中,您可以添加以下行hosts文件

10.0.2.2   outer

但要保存它,如果您的VM中没有管理员,只需将主机文件移动到桌面,然后编辑它以添加行10.0….outer,保存文件,然后移动到其原始位置。