1

こんにちは、IE 8、9 でマルチパート フォーム クロス ドメインを Amazon S3 (たとえば) に投稿する方法を知っている人はいますか?

jQuery フォーム プラグインを使用しました。XDomainRequest オブジェクトをサポートしていないのでしょうか? jQueryフォームは間違った方法ですか?

Amazon S3 バケットを構成して、origin * を post、get に許可し、IE 10 を含む他のすべてのブラウザーで動作するようにしました。

投稿を開始します。私が知ることができることから、ブラウザの左下に表示されるAmazon URLに対して投稿ステータスメッセージが表示されます。しかし、その後、ステータス「中止」でエラーリターン関数(ajaxオプションで指定)をトリガーします。他には何もありません。そのため、リクエストは中止されたようです。ファイルが Amazon に到達することはありません。Amazon からエラーが発生した場合は、もう少し詳細になると思います。

httpsからも投稿しようとしました(AmazonのアップロードURLがhttpsを使用しているため、誰かがどこかで提案したように)。変わりはない。

何か案は?

/ジョン

4

1 に答える 1

0

あなたの疑いは正しいです。あなたのプラグインは、jQuery に基づいているため、XDomainRequest をサポートしません。

jQuery には XDR のサポートが含まれていません。

XDomainRequest の問題の概要:

  • XDR には多数の深刻な制限があるため、jQuery には XDomainRequest のサポートが含まれていません。

IE バージョン 10は CORSをサポートしていますが、以前のバージョンは XDR をサポートしておらず、使用していません。

MSHTML/Trident 6.0 (Internet Explorer 10) はネイティブでサポートされています。MSHTML/Trident 4.0 & 5.0 (Internet Explorer 8 & 9) は、XDomainRequest オブジェクトを介して部分的なサポートを提供します。


この jQuery プラグインをサイトに追加して、問題が解決するかどうかを確認してください。README から:

IE8+ を含むブラウザー間で Cross Origin Resource Sharing (CORS) を透過的に追加する jQuery プラグイン


編集:それが機能しない場合は、同じ変更を試みる次のスニペットを追加できます:

  if ('XDomainRequest' in window && window.XDomainRequest !== null) {
 
  // override default jQuery transport
  jQuery.ajaxSettings.xhr = function() {
      try { return new XDomainRequest(); }
      catch(e) { }
  };
 
  // also, override the support check
  jQuery.support.cors = true;
 
}
于 2013-02-27T20:03:59.817 に答える