【问题标题】:Cannot receive the http status code 413 for CORS无法接收 CORS 的 http 状态代码 413
【发布时间】:2016-08-22 08:02:57
【问题描述】:

我有这个 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 );
            }
        });

【问题讨论】:

    标签: javascript jquery ajax http backbone.js


    【解决方案1】:

    见下面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码。

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

    【讨论】:

    • 从 API Gateway 发送的响应在响应标头上没有任何 Access-Control-Allow-Origin。所以我无法访问响应正文或响应状态。所以问题为我解决了。
    猜你喜欢
    • 1970-01-01
    • 2021-01-20
    • 2015-11-02
    • 1970-01-01
    • 2018-07-01
    • 2016-01-15
    • 2018-09-30
    • 2018-07-07
    • 2016-04-15
    相关资源
    最近更新 更多