1

Web アプリをホストするサーバーとは異なるドメイン内のサーバー上の Web サービスに ajax 要求を行う Web アプリケーションを開発しました。

クロスドメイン要求を許可するために必要なヘッダーを設定するために、プリフライト チェックを実行するように Web サービスを構成しました。

Web アプリでは、JQuery クライアントを使用して Web サービスにアクセスしています。Jquery コマンドのプロパティを設定して、クロス ドメイン アクセスを許可しました。

$.support.cors = true;

Chrome では、これはすべて正常に機能します。ただし、IE9 では、クロス ドメインの動作は部分的にしか成功しません。すべての取得リクエストが機能します。ただし、コンテンツ タイプが application/json のポスト リクエストは失敗します。これは、IE9 が text/html 以外のコンテンツ タイプのポスト リクエストを拒否するためです。IE9 は要求の content-type を切り替え、要求はサーバー上で 400 の不正な要求で失敗します。

IE10 では、クロス ドメイン リクエストが Chrome と同じように機能することを読みました。しかし、これをテストしただけで、IE10 は IE9 と同じ動作をすることがわかりました。ブラウザは content-type を application/json に設定しません。そのため、投稿リクエストは失敗します。

IE10 で、text/html 以外のコンテンツ タイプでクロス ドメイン ポスト リクエストを実行できるかどうかは誰にもわかりません。これにより、データを表示する以上のことを行う Web アプリを作成することが非常に困難になります。

Jquery リクエストで他に必要な設定はありますか? または、飛行前のサービスで?

4

2 に答える 2

0

$.ajax() 呼び出しはどのように見えますか? data: 'json'データ型を強制的にjsonにするために、JQuery呼び出しに追加してみてください。も設定する必要はありません$.support.cors = true;.JQueryがこれを理解する必要があります(ただし、今のところそのままにしておいても問題ありません)。

于 2013-03-12T15:05:06.633 に答える
-1

コンテンツ タイプのパラメータ セット データは「json」です。Chrome はこれを尊重しますが、IE は text/html に切り替えます。これは IE9 以下の既知の問題であるが、IE10 は Chrome と同じ ajax 実装を使用するだろうと読みましたが、明らかにそうではありません。

于 2013-03-13T16:15:12.157 に答える