更新: XDomainRequestは非常に貧弱な実装であり、多くの制限があるため、XDomainRequestに投資しないことを強くお勧めします。基本的には、非SSLサーバーへのGETリクエストに対してのみ実際に機能するため、jsonpなどを使用することをお勧めします。
CORSを使用してクロスドメインAPIを呼び出していますが、InternetExplorerで問題が発生しています。オブジェクトを介してIE8とIE9でCORSが可能になるはずですが、XDomainRequest
動作させることができません。
JQueryはXDomainRequestのネイティブサポートを提供することを拒否しますが、このサポートを追加するためにいくつかのjQueryプラグインが提案されています。このトピックでは、そのような2つのプラグインを提案します。jQuery.XDomainRequest.jsとxdr.jsで、動作することが報告されています。Afaik、プラグインはの動作を自動的にオーバーライドする必要がありますjQuery.ajax
。ここで別のプラグインを見つけました。
CORS対応サーバーへのajaxリクエストを実行するそれぞれのプラグインjQuery.XDomainRequestとxdrおよびjquery.ie.corsを含む小さなデモページを配置しました。ページはChromeとFirefoxで機能していますが、IE8 / 9は(要求を行う前であっても)すぐにアクセス許可拒否エラーをスローします。このMSDNの投稿では、別のハンドラーを追加することを提案してxhr.onprogress = function() {};
いますが、これを試しましたが、どちらも機能していません。
私が間違っていることの手がかりはありますか?また、MS仮想サーバーを使用してIE8でテストしましたが、まったく同じ問題があります。
編集:わかりました。問題の一部は、HTTPS経由でPOSTを使用していたことであることがわかりました。どうやらXDomainRequestはHTTPS経由のCORSを許可していません。HTTPに切り替えることはできますが、POSTが本当に必要です。
Edit2:このストーリーの終わりについては、githubでこの問題を参照してください。HTTP POSTを使用する場合、xDomainRequestはリクエスト本文(引数)をとしてのみエンコードできることがわかりますtext/plain
。application/x-www-form-urlencoded
誰もがまたはを使用するため、これはほとんど価値がありませんmultipart/form-data
。