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

Yea*_*ain 5 javascript ajax jquery 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 );
            }
        });
Run Code Online (Sandbox Code Playgroud)

mik*_*pr4 2

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

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

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

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

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

如果没有看到您收到的响应的更多详细信息,我想浏览器正在采取后续操作,我知道如果响应304 Found返回带有Location标头,这是一个问题,这将导致发生新的请求,您将不会'无法在浏览器继续之前进行拦截。如果您遇到这种情况,并且您没有能力修改 API 本身,那么您可能无能为力。