開発のために、ローカルマシンでNodeJSサーバーを実行しています。デフォルトでは、ポート1337を使用します(8080、1234、9000、9090、65432など、他のいくつかのポートを試しました)。
Chrome、Firefox、OperaからこのNodeJSサーバーに正常に接続できます。しかし、Internet Explorer 11に接続しようとすると、「このページを表示できません」と表示されます(画像を参照)。
さまざまな「解決策」を試し、このサイトでいくつかの質問/回答を表示しました。どれも機能していません。含む:
- 127.0.0.1を試しました
- 「保護モード」と「保護モードの強化」を無効にしました。
- イントラネットゾーンと信頼済みゾーンに「localhost」を追加しました。
- 詳細を確認するために、「Friendly HTTP messages」を無効にしました。
- マシン名とDNS名を使用してみました。
- IPv4アドレスを使用して、「localhost」、さらには「thisismyfrigginpc」のホストファイルに手動エントリを作成しようとしました。
私が経験した唯一の成功は、サーバーがポート80(http://localhost:80/
またはhttp://localhost
)で動作することです。ただし、さまざまな理由でポート80で開発することはできません。ローカルホスト+ポート(一部のポート、80および443以外のポート)でコードをテストする必要があります。
役に立たない質問と回答:
- IEでhttp:// localhostにアクセスできないのはなぜですか?
- ChromeとFirefoxはlocalhostに到達できます。Internet Explorer 9ではできません。どうして?
- Metro IE10でローカルサイトをテストする方法は?
- /programming/19268956/can-not-access-localhostport
助けてください!
ところで、Windows 7 Enterprise 64ビットを実行しています。企業展開ですが、管理者権限があります。ネットワーク構成は、NATとプロキシのない、かなり標準的なDHCPです。
更新
@codenoireからの推奨に基づいて、要求/応答を確認するためにFiddlerをインストールしました。以下は、IEからフィドラーへ、サーバーからフィドラーへの生の要求と応答です。
要求
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の「エミュレーション」のアイデアを試しました。DWORD値とQWORD値の両方として(個々に)値を持つキー「iexplorer.exe」を作成しました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
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に感謝します。