0

特別なプロジェクトのために、私は自分自身の小さなWebサーバーを作成することを選択しました。これは、実際には.Net Framework(HttpListenerクラス)を使用すると非常に簡単です。

昨日InternetExplorerでテストを開始するまで、すべてがうまく機能していました。

私のサーバーは、ieリクエストでクラッシュし続けました!私はついに理由を理解することができました:すなわち、文字通り吃音!(少なくともie7とie8、私はまだ他のバージョンを試していません)。

この問題は、FireFox、Chrome、Operaでは発生しません。

具体的には、Webページで動的なJavaScript挿入を使用して、クロスドメイン呼び出しシナリオで同じオリジンポリシーを回避しています。このスクリプトは、私の小さなサーバーへのリクエストを生成します。構築されたリクエストが次のようになっているとしましょう:

http://localhost:8081/myService?p1=A,p2=B,p3=C,p4=D,p5=E

FFox、Chrome、またはOperaを使用すると、サーバーは実際にブラウザーから1つの要求を受け取ります。

http://localhost:8081/myService?p1=A,p2=B,p3=C,p4=D,p5=E

つまり、私のサーバーは次のようなランダムな量の部分的なリクエストを受け取ります。

http://localhost:8081/myService?p1=A,
http://localhost:8081/myService?p1=A,p2=B,
http://localhost:8081/myService?p1=A,p2=B,p3=C,
http://localhost:8081/myService?p1=A,p2=B,p3=C,p4=D,

(実際、私は20個ほどのパラメーターを持っているので、それらの多くは...)

そして最後に :

http://localhost:8081/myService?p1=A,p2=B,p3=C,p4=D,p5=E

私のロジックはパラメータが不足している状況を処理できるため、これは基本的に大したことではありません。問題は、各不完全な要求が実際に接続を閉じることです(エラー1229)。それは、各要求に応答しようとしていたサーバーをクラッシュさせていました。修正は簡単でしたが、サーバーがそれらの中間の「応答不能」であり、したがって役に立たない要求で溢れているという事実はまだ好きではありません。(さらに、リクエストは次のようになることがあります:

http://localhost:8081/myService?p1=A,p2=B,p3=C,?p1=A,p2=B,p3=C,p4=D,p5=E

!!! )。

私はjavascriptをトレースしました:生成関数は(どのブラウザーでも)一度だけ呼び出されるので、これは本当にieの問題のように聞こえます。

誰かがこの振る舞いを防ぐ考えを持っていますか?

4

0 に答える 0