我有这个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标题
> Access-Control-Allow-Origin:http://fiddle.jshell.net
>访问控制允许方法:GET
您可以看到正确返回了413代码.
如果没有看到有关您收到的响应的更多详细信息,我认为浏览器正在采取后续操作,我知道如果304 Found响应带有Location标头,这将是一个问题,这将导致新的请求发生,在浏览器继续之前,您将无法拦截.如果这就是你正在发生的事情,如果你没有能力修改API本身,你很可能无法做到这一点.