[解決済み] IE9 jQuery AJAXでCORSを使うと "Access is denied "が返ってくる。
質問
以下は、すべてのブラウザで動作する IEを除く (IE 9でテストしています)。
jQuery.support.cors = true;
...
$.ajax(
url + "messages/postMessageReadByPersonEmail",
{
crossDomain: true,
data: {
messageId : messageId,
personEmail : personEmail
},
success: function() {
alert('marked as read');
},
error: function(a,b,c) {
alert('failed');
},
type: 'post'
}
);
別の関数で
dataType: 'jsonp'
しかし、私はこのAJAXコールで返されるいかなるデータも必要としません。私の最後の手段は、それを動作させるために、JSONPでラップされた不明瞭なものを返すことです。
なぜ IE がデータを返さない CORS リクエストで失敗するのか、何か思い当たることはありますか?
どのように解決するのですか?
これは、既知の バグ のバグです。jQuery チームは、コアでこれをサポートする予定はなく、プラグインとしてより適しています。 このコメント ). IEでは ではなく を使用します。 XMLHttpRequest という名前の代替オブジェクトがありますが XDomainRequest .
そこで は をサポートするプラグインがあり、これは はここで見つけることができます。 : https://github.com/jaubourg/ajaxHooks/blob/master/src/xdr.js
EDIT
この機能は
$.ajaxTransport
はトランスポーター・ファクトリを登録します。トランスポーターは
内部で
で
$.ajax
を使用してリクエストを実行します。したがって、私
とする
を呼び出すことができるはずです。
$.ajax
を通常通り呼び出せるはずです。トランスポーターとエクステンドに関する情報
$.ajax
は
はこちら
.
また、このプラグインのより良いバージョンは、次のようになります。 ここで .
他に2つの注意点があります。
- オブジェクト XDomainRequest は IE8 から導入されました。 であり、それ以下のバージョンでは動作しません。
- IE10 からは CORS は でサポートされるようになり、通常の XMLHttpRequest .
編集 2: http から https への移行問題
リクエストの対象は、ホスティングページと同じスキームでなければならない
この制限は、もしあなたの AJAX ページが http://example.com にある場合、ターゲットURLもHTTPで始まらなければならないことを意味します。 同様に、もしあなたのAJAXページが https://example.com である場合 ターゲット URL も HTTPS で始まる必要があります。
関連
-
[解決済み] jQueryでチェックボックスに "checked "を設定する
-
[解決済み] jQueryでページを更新するにはどうすればよいですか?
-
[解決済み] jQueryで要素にスクロールする
-
[解決済み] jQueryで入力を無効化/有効化する?
-
[解決済み] jQueryで複数のクラスを持つ要素を選択するにはどうすればよいですか?
-
[解決済み] jQueryで現在のURLを取得する?
-
[解決済み] jQueryを使ったAjaxリクエストの中断
-
[解決済み] jQueryでフォームデータをJavaScriptオブジェクトに変換する
-
[解決済み] jQuery Ajax呼び出し後のリダイレクトリクエストを管理する方法
-
[解決済み] jQuery removeClass ワイルドカード
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] jQueryのイベントハンドラを削除する最良の方法?
-
[解決済み] セレクトした要素の外側のHTMLを取得する
-
[解決済み] クリックボタンでクリップボードにコピー
-
[解決済み] jQueryを使用してテキストボックスの値を取得するには?
-
[解決済み] jQueryを使用してCSSのdisplay noneまたはblockプロパティを変更するにはどうすればよいですか?
-
[解決済み] チェックボックスがチェックされた場合のjQuery
-
[解決済み] jQueryを使用して配列から特定の値を削除する方法
-
[解決済み] jQueryで多段式フォームをリセットする
-
[解決済み】フォームのhiddenフィールドにjQueryの".val() "を使って値を設定してもうまくいかない。
-
[解決済み】CORS(cross-origin resource sharing)投稿リクエストを動作させる方法