IE 不适用于本地主机 + 端口

maw*_*sco 27 windows internet-explorer localhost

我有一个 NodeJS 服务器在我的本地机器上运行,用于开发目的。默认情况下,它使用端口 1337。(我尝试了一些其他端口,例如 8080、1234、9000、9090、65432 等)。

我可以从 Chrome、Firefox 和 Opera 成功连接到这个 NodeJS 服务器。但是,当我尝试连接 Internet Explorer 11 时,我看到“无法显示此页面”(见图)。

在此处输入图片说明

我尝试了各种“解决方案”,并在本网站上查看了几个问题/答案。他们都没有工作。包含:

  • 我试过 127.0.0.1
  • 我已禁用“保护模式”和“增强保护模式”。
  • 我已将“localhost”添加到 Intranet Zone 和 Trusted Zone。
  • 我禁用了“友好的 HTTP 消息”,希望能看到更多细节。
  • 我试过使用我的机器名称和 DNS 名称。
  • 我尝试使用我的 IPv4 地址在我的主机文件中为“localhost”甚至“thisismyfrigginpc”创建一个手动条目。

我唯一的成功是服务器在端口 80(http://localhost:80/http://localhost)上运行。但是,由于各种原因,我无法在端口 80 上进行开发。我需要在 localhost+port(某些端口,除 80 和 443 之外的任何端口)上测试我的代码。

没有帮助的问题和答案:

请帮忙!

顺便说一句,运行 Windows 7 Enterprise 64 位。企业部署,但我有管理员权限。网络配置是非常标准的 DHCP,没有 NAT 和代理。

更新

根据@codenoire 的推荐,我安装了 Fiddler 来查看请求/响应。以下是 IE-to-Fiddler-to-server-to-Fiddler 的原始请求和响应:

要求

GET http://localhost:1337/common/test.html HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
Accept-Language: en-US
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
Host: localhost:1337
Run Code Online (Sandbox Code Playgroud)

回复

HTTP/1.1 200 OK
Set-Cookie: _session=WRuVLmrXMtjnDJY8;expires=Wed, 15 Jan 2014 23:19:16 GMT;path=/;domain=;httponly
Content-Type: text/html;charset=utf-8
Last-Modified: 1389818856000
Date: Wed, 15 Jan 2014 22:19:16 GMT
Connection: keep-alive
Content-Length: 128

<html>
<head>
    <title>Connectivity Test Page</title>
</head>

<body>

<h1>This is a test page.</h1>

</body>

</html>
Run Code Online (Sandbox Code Playgroud)

结果

在此处输入图片说明

更新 2014-01-17

我已经在使用 IE 11 的“干净”非公司 Windows 7 安装上测试了这个场景。结果与我的观察结果相同。这意味着可以消除由 Windows 公司形象所做的任何配置。此外,网络配置相当“普通”。

更新 2014-01-21

我已经尝试过 Internet Explorer“模拟”的想法。我创建了一个键,“iexplorer.exe”作为 DWORD 和 QWORD 值(单独)的值8000, 8001, 9000, 9001, 10000, and 10001。每次之后,重新启动并再次测试。所有这些尝试都产生了相同的结果。顺便说一句,我们需要在 IE11 中测试此代码。从长远来看,各种兼容性代码和技巧实际上并没有帮助我们。

更新 2014-01-22

在端口 1337 上启动了一个 XAMPP Apache 服务器。IE 连接到它就好了。因此,IE 不喜欢 NodeJS 响应,而其他浏览器似乎处理得很好。我们将调查我们的 NodeJS 代码,看看它在标题/内容中究竟发生了什么,看看是否有任何不合时宜的地方。

2014-01-27 更新:决议

我只是想记录结果。原始响应包括 Content-Type:text/html;charset=utf-8并且根据正确答案,它应该是:Content-Type: text/html; charset=utf-8在类型和字符集之间有一个空格。

结果如下:

在此处输入图片说明

原始响应:

HTTP/1.1 200 OK
Set-Cookie: _session=EshWS7xDnCeV9pXS;expires=Mon, 27 Jan 2014 18:49:21 GMT;path=/;domain=;httponly
Date: Mon, 27 Jan 2014 17:49:21 GMT
Last-Modified: 1389818856000
Content-Type: text/html; charset=UTF-8
Content-Length: 128
Connection: keep-alive

<html>
<head>
    <title>Connectivity Test Page</title>
</head>

<body>

<h1>This is a test page.</h1>

</body>

</html>
Run Code Online (Sandbox Code Playgroud)

感谢@harrymc 揭开答案。

har*_*ymc 9

WWW3 文章设置 HTTP 字符集参数指定:

Content-Type: text/html; charset=utf-8
Run Code Online (Sandbox Code Playgroud)

这定义Content-Type为之前有一个空格charset

我知道你已经发现这确实是问题所在,所以问题的根源是微软或某些中间人代理的一些非常缺乏想象力的编程。