56

現在、JavaScript で WebSockets を使用して、IE10 (Windows 8) で Web サイトを開発しています。Firefox 18 と Chrome 25 では正常に動作しますが、IE10 では接続を確立すると SecurityError が発生します。

私がやっていることはかなり簡単に思えます:

websocket = new WebSocket('wss://hello.dev.mydomain.net');

しかし、IEはそれが好きではありません:

SCRIPT5022: SecurityError 

スクリプトは " https://test.dev.mydomain.net " にあります (明らかに実際のアドレスではありません)。

私が気になるのは、ローカル コンピューター上のファイル (例: file://...) をダブルクリックするだけで機能することです。さらに悪いことに、フィドラーを使用して HTTP トラフィックを監視すると...それも機能します。APIの仕様に詳述されているように、フィドラーなしではまったく接続がないようです。(下記参照。)

websocket の仕様から判断すると、例外は Chrome/Firefox でも表示されるはずですが、表示されません。したがって、HTTP/HTTPS に関連するものがあるとは思えません。いずれにせよ、私は httpS ページで wsS ソケットを使用しています... さらに、オンラインの例で見つかった別の有効なサーバーで wss アドレスを置き換えると、機能します。

これが関連しているかどうかはわかりませんが、test.dev.mydomain.net からの IP は 10.14.xx であり、hello.dev.mydomain.net は 194.247.xx です。何らかのセキュリティをトリガーできるかどうかはわかりませんIEのみ...

もう 1 つ: *.dev.mydomain.net の証明書を持っていますが、IE には問題がないようです。スクリプトはもともと my.name.dev.mydomain.net というサーバー上に存在していましたが、別の URL からアクセスしているため (最初は何らかの同一生成元ポリシーの問題である可能性があると考えていたため、リダイレクトが発生しました)、私はそれがどのように重要になるかわかりません。少なくともそうならないことを願っています...

どんなアイデアでも大歓迎です。

編集:信頼されたゾーンにサイトを追加しても機能しません。

4

8 に答える 8

64

ローカル (イントラネット)ドメインで Websocket を開こうとすると、IE が SecurityError をスローするようです。これを克服するには、ローカル サイトを認識するための IE の自動アルゴリズムを無効にすることができます。これは で実行できますTools > Internet Options > Security > Local Intranet > Sites

イントラネット検出設定

すべてのチェックボックスをオフにします (または、ドメインがイントラネットにどのように配置されたかが正確にわかっている場合は、特定のチェックボックスのみをオフにします)。

IE は (とりわけ) プロキシ設定を使用してローカル サイトを決定することに注意してください。ドメインがプロキシ設定でプロキシから除外されているとリストされている場合、おそらくイントラネットとして扱われます。これが、Fiddler を有効にすると WebSocket が機能する理由です。IE プロキシ設定が変更されるため、イントラネット サイトのリストが変更されます。

于 2013-11-22T12:42:17.877 に答える
8

さて、私の質問はうまくいきませんでしたので、私が見つけた「回避策」を投稿します。

194.247 で、ウェブサイトの別のアドレスを取得しました。. それも。これは、魔法のように、それを解決しました。IE は、ローカルのものと外部のものを混在させるのが好きではなく、IP を監視していると思います。

とにかく、これが同じ問題を抱えている人の役に立てば幸いです。

IE を設定して「実際の」問題を解決する解決策がある場合は、お知らせください :)

乾杯、

于 2013-03-05T16:50:59.887 に答える
1

クライアントのホスト名/IP アドレスは、リッスンしているサーバーの IP/ホスト名と同じである必要があります。そうしないと、上記のエラーが発生します。

1) サーバーのホスト名が IP/localhost などでリッスンするように構成されているかどうかを確認し、明示的にホスト名を指定していない場合は、ast サーバー

2) クライアントで同じホスト名を使用します。これで問題は解決します。それは私のために働いた...

于 2016-02-24T12:52:04.070 に答える
0

エラーが発生しました (ただし、SCRIPT5022 の部分は表示されず、"ScriptError" と報告されるだけです)。「信頼済みサイト」をクリックしてから、リモート Websocket をホストするマシンを追加することで、この問題を回避しました。信頼済みサイトに追加するには、

  • 「ws://」の部分を除いてアドレスを指定する必要がありました (mymahcine.mydomain.com のように)。

  • 「サーバーの確認が必要 https://」オプションのチェックボックスをオフにする必要がありました。

  • ドメインの追加が完了したら、[サーバーの確認が必要 (https://)] ボックスを再度オンにしました。すべてのユーザーに同じことをお勧めします。 https (むしろ ws:// 私の場合)
于 2015-05-12T17:36:44.530 に答える