从CORS请求中捕获异步异常
Catching async exceptions from CORS request
我允许用户通过ajax调用从web服务器向他们授予签名URL,从而将文件上传到amazons3存储桶。
每隔一段时间,请求就会失控,给我403分(至于为什么我不知道)。我在xhr请求中尝试了catch块,但这个异常没有被捕获。
看起来像这个
https://bucket.s3.amazonaws.com/hB22C1m9KAll477LWIGx42fTuK4htm?AWSAccess…JKQ6DXF43A&过期=1385394844&签名=/OOmeLHinfcDvm30O/9b+9edkw=403(禁止)bucket.s3.amazonaws.com/hB22C1m9KQ6DXF4TuK4htm?AWSAccessKeyId=AK…Q62CNKF3PC3QLA&过期=1385394844&签名=/OKomeLHkplfcDvm30O/9b+9edkw=:1
所以有两个问题。
- 有可能从CORS请求中捕获异步异常吗
- 为什么我会被禁赛?(我唯一能想到的是,如果URL过期了,但我有很长的超时时间,并且它在通过AJAX从服务器接收到的那一刻就被使用了)
如果发出CORS请求时出错,XMLHttpRequest的onError
处理程序将启动。关于错误发生的原因,您没有任何有用的信息,但您会知道存在错误。有关更多详细信息,请参阅以下问题:是否有可能捕获CORS错误?
至于为什么你会犯一个被禁止的错误,这很难知道。您对URL过期的评估是可能的,尤其是如果偶尔一个请求的时间比预期的要长。
通过xhr发送的CORS请求上的异步异常可以通过检查onreadystatechange事件来捕获。
xhr.onreadystatechange = ƒ(e) {
if (this.readyState === 4 && this.status === 200) {
try {
console.log('good');
}
catch (error) {
alert("There has been an error");
console.log(error);
return false;
}
callback();
}
else if (this.readyState === 4 && this.status !== 200) {
console.log('There has been an error');
}
};
相关文章:
- esri javascript异步打印
- JavaScript异步问题
- $translateProvider.useStaticFilesLoader的Angular Translate异步定
- 异步facebook功能
- 异步并行错误
- 在Redux中,我应该在哪里编写复杂的异步流
- 角度异步http自动完成
- 如何从SeleniumWebdriver获取异步Javascript响应
- Meteor:异步函数回调异常:onAfterAction
- 从CORS请求中捕获异步异常
- 在正确的上下文中捕获异步异常
- 与在异步回调链中使用 try catch 块相比,返回异常有什么优势
- 异步函数的 JavaScript 回调:是否有任何模式可以区分“返回值”和“异常”
- 未捕获异步 JavaScript 中引发的异常
- 在JavaScript Promise中引发异步失败的异常
- 使用bluebird promise进行异步异常处理
- 我如何从异步函数中捕获JS异常,我不控制
- ExtJS 4 - callParent的异步回调抛出异常
- Node.js最佳实践异常处理-异步/Await之后
- 使用node.js的异步异常处理