ログインページの API への POST を実行する次の JavaScript コードがあります。
do_post_form_data = function (relative_url, access_token, postData) {
return $.Deferred(function (def) {
$.ajax({
type: 'POST',
url: baseURL + relative_url,
contentType: 'application/x-www-form-urlencoded',
dataType: 'json',
data: postData
})
.done(function (data) {
def.resolve(data);
})
.fail(function (jqXHR, textStatus, errorThrown) {
var error = jqXHR.responseJSON ? jqXHR.responseJSON : { error: "", error_description: "POST failed." };
def.reject(error);
});
});
},
ログインが失敗した場合 (無効な資格情報が送信された場合)、API は呼び出し元に 401 Unauthorized エラーを返し、ログインが失敗した理由を説明する JSON オブジェクトが本文に含まれます。Chrome、Firefox、および Safari の最新バージョンからデータを送信すると、コードは期待どおりに機能します。jqXHR オブジェクトに responseJSON オブジェクトが存在し、エラー メッセージを取得できます。
ただし、IE10 は 401 エラーを傍受し、API サーバーが URL を提供しないログイン ページにリダイレクトしようとしているようですが、Fiddler でサーバーに対して追加の呼び出しが行われていることはわかりません。私の AJAX 呼び出しでは 401 エラーは表示されませんが、jqXHR オブジェクトに JSON データがないため 404 エラーが返されます。
以前にこの動作を見て、IE に最初の 401 エラーを AJAX 呼び出しに報告させる方法を見つけた人はいますか? jQuery 2.0.2 を使用した IE10。
提案をありがとう。