我出于开发目的在本地计算机上运行了NodeJS服务器。默认情况下,它使用端口1337。(我尝试了其他一些端口,例如8080、1234、9000、9090、65432等)。
我可以从Chrome,Firefox和Opera成功连接到此NodeJS服务器。但是,当我尝试连接Internet Explorer 11时,看到“无法显示此页面”(参见图像)。
我尝试了各种“解决方案”,并在此站点上查看了一些问题/答案。他们都没有工作。包含:
- 我尝试了127.0.0.1
- 我已禁用“保护模式”和“增强保护模式”。
- 我已将“ localhost”添加到Intranet区域和Trusted区域。
- 我已禁用“友好的HTTP消息”,以希望查看更多详细信息。
- 我尝试使用我的计算机名称和DNS名称。
- 我尝试使用我的IPv4地址在主机文件中为“ localhost”甚至“ thisismyfrigginpc”创建一个手动条目。
我唯一获得的成功是服务器在端口80(http://localhost:80/
或http://localhost
)上运行。但是,由于多种原因,我无法在端口80上进行开发。我需要在localhost + port(某些端口,除80和443以外的任何端口)上测试我的代码。
没有帮助的问题和答案:
- 为什么我无法通过IE访问http:// localhost?
- Chrome和Firefox可以访问本地主机;Internet Explorer 9不能。为什么?
- 如何在Metro IE10中测试本地站点?
- /programming/19268956/can-not-access-localhostport
请帮忙!
顺便说一句,运行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
响应
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>
结果
更新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年1月27日更新:解决方案
我只想记录结果。原始响应包括Content-Type :text/html;charset=utf-8
,根据正确答案,它应该是:Content-Type: text/html; charset=utf-8
Type和charset之间有一个空格。
结果如下:
原始回应:
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>
感谢@harrymc找出答案。