jQuery似乎没有识别出具有Ajax调用状态码403的不同字符串

时间:2012-03-30 07:46:59

标签: javascript jquery ajax http-headers http-status-code-403

我有一个有趣的情况,我不确定这是我的错,还是jQuery的错,因此我想咨询你们。

目前我正在进行Ajax调用,该调用返回403状态代码。但403附带的字符串与标准不同。

它返回403 access denied但是根据规范它应该是403 Forbidden

我知道如何从服务器获取200状态代码,问题在于如何处理这种情况。

这是我的Ajax jQuery代码,它不会进入任何console.log()情况。

this.get = function(){
    var callUrl = self.url + "&limit=" + self.limit + "&page=" + self.page;
    callUrl += self.getFilterQuery();
    callUrl += "&callback=?";
    console.log(callUrl);
    $.ajax({
        url: callUrl,
        dataType: 'json',
        success: function(response){
            console.log(response);
        },
        statusCode: {
            403: function(response){
                console.log('error');
                console.log(response);
            }
        },
        error: function(response){
            console.log(response);
        }
    });    
}

注意:网址是正确的,我可以获得200状态代码,但我想处理403 access denied。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

看起来这个调用实际上不是使用XHR请求而是通过JSONP。 (URL中的“callback =?”) - 对于JSONP请求,状态代码信息不可用。您需要确保始终发送有效的响应。

请参阅http://api.jquery.com/jQuery.ajax/

答案 1 :(得分:1)

引用此选项以查看您是否可以确定具体的拒绝。 http://en.wikipedia.org/wiki/HTTP_403检查抛出错误的目录的设置。