Jquery ajax在IE中报告404而不是401

时间:2013-12-18 21:03:53

标签: javascript jquery ajax internet-explorer

我有一个使用google drive api上传文件的网络应用。如果身份验证过期,我们会返回401,允许应用重新进行身份验证并重试。这在Chrome中运行良好,返回401并且一切都很美好。

然而在IE10中,jqXHR.status是404而不是401.当我查看IE网络分析器时,请求确实返回401,但它不是jquery给出的:

https://www.googleapis.com/upload/drive/v2/files/0B_Z9rTaY-rm0T2xGRC1LcjdrTnM?uploadType=multipart  
PUT 401 application/json    508 B   
437 ms  XMLHttpRequest  74272   0   374 0   0   433979

IE中的控制台错误

SCRIPT7002: XMLHttpRequest: Network Error 0x80070005, Access is denied.

示例ajax调用

$.ajax("https://www.googleapis.com/upload/drive/v2/files" + up + "?uploadType=multipart", {
    data: data,
    headers: {Authorization: 'Bearer ' + self.authResult.access_token},
    contentType: false,
    processData: false,
    type: fileId != null ? 'PUT' : 'POST',
    success: function(data) {
        log.debug("upload complete");
    },
    error: function(jqXHR, textStatus, errorThrown) {
        var errorCode = jqXHR.status;
        log.error("failed to upload file " + errorCode);
    }
}

以下是一个类似的问题,但我已经在建议使用错误回调的解决方案:

IE is not handleing 401 error

我需要确定它实际上是401错误,以便我可以启动重新验证过程。为什么401被隐藏?我如何识别它实际上是一个导致请求失败的身份验证错误?

0 个答案:

没有答案