Javascript 从CORS请求捕获异步异常

Javascript 从CORS请求捕获异步异常,javascript,exception,amazon-s3,cors,Javascript,Exception,Amazon S3,Cors,我允许用户通过ajax调用从web服务器向他们授予签名URL,从而将文件上传到AmazonS3存储桶 每隔一段时间,请求就会失控,给我一个403(至于为什么我不知道)。我在xhr请求中使用了try-catch块,但是没有捕获到这个异常 看起来像这样 …JKQ6DXF43A&Expires=1385394844&Signature=/OKomeLHinfcDvm30O/9b+9edkw= 403(禁止) bucket.s3.amazonaws.com/hB22C1m9KQ6DXF4TuK4htm?

我允许用户通过ajax调用从web服务器向他们授予签名URL,从而将文件上传到AmazonS3存储桶

每隔一段时间,请求就会失控,给我一个403(至于为什么我不知道)。我在xhr请求中使用了try-catch块,但是没有捕获到这个异常

看起来像这样

…JKQ6DXF43A&Expires=1385394844&Signature=/OKomeLHinfcDvm30O/9b+9edkw= 403(禁止) bucket.s3.amazonaws.com/hB22C1m9KQ6DXF4TuK4htm?AWSAccessKeyId=AK…Q62CNKF3PC3QLA&Expires=1385394844&Signature=/okomelhkplfcddvm30o/9b+9edkw=:1

所以有两个问题

  • 是否可以从CORS请求捕获异步异常
  • 为什么我会被禁止?(我唯一能想到的是URL是否过期,但我有一个很长的超时时间,并且它在通过AJAX从服务器接收到它时就被使用了)

如果发出验尸官请求时出错,XMLHttpRequest的
onError
处理程序将启动。关于错误发生的原因,您将没有任何有用的信息,但您将知道存在错误。有关详细信息,请参见以下问题:


至于你为什么会犯一个被禁止的错误,这是很难知道的。您可以评估URL是否过期,特别是如果请求的时间比预期的长。

可以通过检查onreadystatechange事件捕获通过xhr发送的CORS请求的异步异常

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');
      }
    };