Windows 8 上市之际,地球上又出现了一个新的浏览器,叫做 IE10 。事实上 IE10 支持了更多的 HTML5 / CSS3 的标准,几乎可以跟现代浏览器相提并论了。 然而与一般浏览器不同的是,对于 Rails Developer 来说,我们通常是用 OS X 或 Linux ,那 IE 是跑在虚拟机器或别的电脑里面。用 OS X 搭配 Pow 这套挂载 Rack app 的程序,所以通常是把 Windows 的网络设为 NAT 连到 Host OS ,然后在 Windows 的 C:\Windows\System32\drivers\etc\hosts 里面写死 IP 设定,如 192.168.2.2 railsapp.dev。这样子就可以通过 railsapp.dev 连到 development environment 的 Rails app。 内网网络连接在 Modern 版 IE10 中无法打开那 IE10 有什么不同的呢?因为 IE10 在 Windows 8 同时有 Modern 版和桌面版,如果用 Modern 版 IE10 打开 http://railsapp.dev 要测网站的话,就会出现「无法显示此网页」: 这个原因是: Modern 版 IE10 中会强制启用「增强保护模式」。 在「增强保护模式」,网络连接会受阻,它会拒绝连到 127.0.0.1 和 Private Network 的 IP 区段(如 192.168.0.0/16 、 10.0.0.0/8。 Windows 8 做为委身于 Virutal Machine 里面的 Guest OS ,要连线到 OS X 的 Pow ,就要连到 192.168.2.2 这个 IP (前文指定的 Host OS IP) 但因为是内网 IP ,所以被 IE 的「增强保护模式」给禁止连接。 因为是 IP 被挡,所以就算用 xip.io 解到区网 IP 也不能解决。而且它是挡 Private Network ,所以我猜想如果是连线到同一区网内的别台电脑,也会遇到同样的问题。 同样的问题,应该也会在其他 Web App 的开发环境遇到,如 Python 、 PHP 、 Node.js 等,只要 http server 不是开在 Windows 本机,情况就跟上面描述的类似。 在桌面版重现问题Modern 版 IE10 并没有内置 F12 开发人员工具,要 debug 就有点难。(在Modern 版 IE11 中将会内置开发人员工具)不过还好「增强保护模式」可以在桌面版的 IE10 打开,就在「Internet 选项→高级→启动增强保护模式」: 重新打开 IE10 桌面版,你就能重现「无法连线」的问题了。最棒的是还可以在 F12 开发人员工具里面看到错误信息: 解法:添加到受信任的站点那怎么解决呢?只要把 http://railsapp.dev 加入「受信任的站点」就行了,在「Internet 选项→安全性」,点选「受信任的站点」,按下「站点」按钮就能新增之。不过可惜没办法直接指定 http://*.dev 网址: |