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