无法接收CORS的http状态代码413

时间:2016-08-22 08:02:57

标签: javascript jquery ajax http backbone.js

我有这个Web应用程序,其中Web服务托管在Amazon API网关&客户端应用程序托管在cloudefront站点上。这些服务启用了CORS。对于任何错误,例如http 500,401,403,我能够使用status属性从jqxhr对象接收http状态。但似乎对于http状态413我在代码中获得状态0。

我还注意到,如果在服务器中发出请求,则可以接收http状态413。但仅对于跨域ajax,状态413作为状态0被接收。

有没有办法处理跨域ajax请求的http状态413.

为简洁起见,请考虑以下代码块,对于http状态500,401,错误回调日志输出500或401.但是对于413,它显示为0.

        $.ajax({
            url: 'URL to AWS API Gateway',
            success: function(d){
                 console.log(d);
            },
            error: function(a){
                console.log( a.status );
            }
        });

1 个答案:

答案 0 :(得分:2)

请参阅以下http://jsfiddle.net/tqgv7z9c/1/(请注意http不是https)

$.ajax({
    url: 'http://www.mocky.io/v2/57bb03fc100000460a585000',
    error: function(a){
        $('#code').text( a.status );
    }
});

我使用http://www.mocky.io/使用以下设置进行设置:

  • 413请求实体太大
  • CORS标题

您可以看到正确返回了413代码。

如果没有看到有关您收到的回复的详细信息,我认为浏览器正在采取后续行动,我知道如果304 Found回复带有Location标题,则会出现问题,这将导致发生新请求,并且在浏览器继续之前您将无法拦截。如果您正在为此发生这种情况,如果您无法修改API本身,则很可能无法解决此问题。