2

pluploadを使用してファイルをASP.NETWebAPIサービスにアップロードしています。Chromeで正常に動作し、開発マシンのIE8/IE9でも正常に動作します。ただし、実際のサーバーでWebサイトに接続すると、ファイルをアップロードすると、pluploadのエラーハンドラが-400のエラーコードと「セキュリティエラー」のエラーメッセージで起動します。

応答ヘッダーと要求ヘッダーを見ると、すべて問題ないように見えます。応答には正しい戻り値も含まれています。これはhttpsの使用と関係があると思いますが、よくわかりません。Chromeでは正しく機能します。(Firefoxにはまったく別の問題がありますが、IEとは異なり、少なくともデータを取り戻すようです。)

リクエストのAcceptヘッダーと関係があるのではないかと思います。これは次のとおりです。

Accept  application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*

応答ヘッダーのContent-Typeはtext/htmlです。これは、application / jsonにより、IEが応答をスクリプトに返すのではなく、保存するようにするためです。

では、この「セキュリティエラー」とは何ですか?なぜそれが発生するのですか?さらに重要なのは、応答が正しく戻ってきたように見えるのに、なぜそれを取得しているのですか?さらに重要なのは、どうすれば修正できますか?

編集:わかりました、それでより多くの情報。どうやらIE9はpluploadにhtml4ランタイムを使用しており、ファイルのアップロードを処理するためにiframeを使用しています。データが返され、HTMLIFrameElementにアクセスしようとすると、IE9は「アクセスが拒否されました」というエラーを出します。xssエラーを防ぐのに役立つことは理解していますが、iframeからの読み取りは安全なはずです...

だから誰かがそれを回避する方法を知っていますか?

4

1 に答える 1

1

IE8とIE9の両方が、HTML5ランタイムではなく、pluploadのHTML4ランタイムを使用していることがわかりました。HTML4の稼働時間は、アップロードを処理するために非表示のiframeをレンダリングすることで機能します。ここでの問題は、IE8 / 9がXSS攻撃を防ぐために、そのiframeへのアクセスを許可しないことです。そのため、pluploadがアップロードの結果を読み取ろうとすると、セキュリティエラーが発生します。

解決策は基本的に、Webサービスを呼び出すページと同じURLでWebサービスを利用できるようにすることです。私の場合、IISでWebサービスサイトを指す仮想アプリケーションを構成しました(これはたまたま同じサーバー上にありますが、2つの異なるサーバーでも機能すると思います)。

同じサイトに仮想アプリケーションを作成すると、セカンダリサイトからコンテンツを取得しながら、プライマリサイトのURLを参照できます。

于 2013-01-28T16:41:10.293 に答える