web-dev-qa-db-ja.com

IEはlocalhost +ポートでは機能しません

ローカルマシン上でNodeJSサーバーを開発目的で実行しています。デフォルトでは、ポート1337を使用します。(8080、1234、9000、9090、65432など、他のいくつかのポートを試しました)。

Chrome、Firefox、OperaからこのNodeJSサーバーに正常に接続できます。しかし、Internet Explorer 11に接続しようとすると、「このページは表示できません」と表示されます(画像を参照)。

enter image description here

私はさまざまな「解決策」を試し、このサイトでいくつかの質問/回答を表示しました。それらのどれもうまくいきませんでした。含む:

  • 127.0.0.1を試しました
  • 「保護モード」と「拡張保護モード」を無効にしました。
  • イントラネットゾーンと信頼済み​​ゾーンに「localhost」を追加しました。
  • 詳細を確認するため、「Friendly HTTP messages」を無効にしました。
  • マシン名と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

応答

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>

結果

enter image description here

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を更新

XAMPP Apacheサーバーをポート1337で起動しました。IEはそれに正常に接続します。したがって、NodeJS応答にはIEが好きではないものがありますNodeJSコードを調査して、ヘッダー/コンテンツで正確に何が起こっているかを確認し、何かが不揃いかどうかを確認します。

2014-01-27の更新:解像度

結果を文書化したかっただけです。元の応答にはContent-Type:text/html;charset=utf-8が含まれており、正解に基づいて、タイプと文字セットの間にスペースを入れたContent-Type: text/html; charset=utf-8にする必要があります。

結果は次のとおりです。

enter image description here

生の応答:

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に感謝します。

25
mawcsco

WWW3記事 HTTP文字セットパラメータの設定 は次のように指定します。

Content-Type: text/html; charset=utf-8

これはContent-Typeは、charsetの前に空白があると見なします。

これが実際に問題であることはすでにご存じだと思います。問題の原因は、Microsoftや中間業者のプロキシによる非常に想像力に欠けるプログラミングです。

9
harrymc

IEの設定に問題がある可能性があります。

これを修正する最も簡単な方法は、インターネットオプションを開き、[詳細設定]タブに移動して、[Internet Explorerの設定をリセット]をクリックすることです。この設定にはすべての設定が含まれていないため、「詳細設定をリセット」ではなく、必ず選択してください。

これが機能しない場合は、localhostの代わりに127.0.0.1を使用してナビゲートしてみてください。これで問題が解決する可能性は低いですが、問題が発生する場合があります。

編集:これはIE11の問題である可能性があることを追加したいと思います。私たちはそれと多くの互換性の問題を抱えていることを知っています。 IE10にロールバックしたくない場合は、レジストリからいつでもエミュレートできます。

HKLM\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\

次のキーを作成します。

FEATURE_BROWSER_EMULATION

その中に、DWORD値を作成します。

iexplorer.exe

次のいずれかの値を使用します。

 IE8 - 8000 (or 8001)
 IE9 - 9000 (or 9001)
 IE10 - 10000 (or 10001)

10001で最も成功しています。

3
WreithKassan

プロキシ設定を確認してください。あなたは企業ネットワークを利用しているため、IE(必ずしも他のブラウザにミラーリングするとは限りません))に不適切なプロキシポリシーが押し込まれる可能性があります。

1
Xavier J