IE8 と IE9 で、 POST動詞とPUT動詞でjQuery.ajax() を使用して RESTful API を呼び出すと、 jqXHR で応答ヘッダーが返されないことに気付きました。ただし、GET 要求は期待どおりに機能します。
この動作は、他のすべてのブラウザーとは異なります。Chrome、FF、Opera、および Safari のすべてが、POST および PUT 要求の応答で期待されるヘッダーの完全なセットを返すことを確認しました。IE8 と IE9 だけが、床にヘッダーを投げているようです。(私がチェックしていないことの 1 つは、HEAD リクエストで何が起こるかです。)
ヘッダーが実際にネットワーク経由で作成されていることをFiddlerで確認したので、問題は jQuery 自体または IE8 と IE9 のいずれかにあります。
これは既知の問題ですか? もしそうなら、回避策はありますか。POST および PUT に続くヘッダーを保持するために、jQuery で何かをオーバーロード/上書きできますか? 私の現在の回避策は、成功コールバック内で GET を使用して変更されたデータを単純に再フェッチすることです。IE8 と IE9 はGET操作のヘッダーを台無しにしないためです。
以下は、メインの jQuery ベースの AJAX ワーカー メソッドのスニペットです。
$.ajax({
url: String.format(um.proxy.url, url),
type: ajaxParams.verb,
contentType: "application/json; charset=utf-8",
dataType: "json",
data: String.format('{0}', ajaxParams.jsonData),
headers: mapOfHeaders,
success: function (data, textStatus, jqXHR) {
//...
},
error: function (msg, textStatus, errorThrown) {
//...
}
});