我有以下 javascript 代码对登录页面的 API 执行 POST:
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 发送数据时,该代码按预期工作。responseJSON 对象存在于 jqXHR 对象上,我可以检索错误消息。
但是,IE10 似乎正在拦截 401 错误并尝试重定向到 API 服务器未提供 URL 的登录页面,尽管我在 Fiddler 中看不到对服务器进行的任何其他调用。我的 AJAX 调用从未看到 401 错误,但最终收到 404 错误,jqXHR 对象中没有 JSON 数据。
有没有人见过这种行为并找到一种方法让 IE 向 AJAX 调用报告最初的 401 错误?带有 jQuery 2.0.2 的 IE10。
感谢您的任何建议。