0

我有以下 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 错误?带有 jQ​​uery 2.0.2 的 IE10。

感谢您的任何建议。

4

0 回答 0