我有这个 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 );
}
});
最佳答案
请参阅以下内容 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 header
- 访问控制允许来源:http://fiddle.jshell.net
- 访问控制允许方法:GET
您可以看到正确返回了 413 代码。
如果没有看到您收到的响应的更多细节,我想浏览器正在采取后续行动,我知道如果 304 Found
响应返回 Location
header ,这将导致发生新的请求,并且在浏览器继续之前您将无法拦截。如果这就是您遇到的情况,如果您没有能力修改 API 本身,您可能无能为力。
关于javascript - 无法接收 CORS 的 http 状态代码 413,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39074173/