Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs Amazon S3-错误和不安全的响应_Angularjs_Amazon Web Services_Angular File Upload - Fatal编程技术网

Angularjs Amazon S3-错误和不安全的响应

Angularjs Amazon S3-错误和不安全的响应,angularjs,amazon-web-services,angular-file-upload,Angularjs,Amazon Web Services,Angular File Upload,这个问题已经被问过了,但是这个答案对我没有帮助,因为我知道这个URL是正确的,因为它指向的是美国标准的URL,在亚马逊指南中有详细说明 因此,我试图通过angular libraryng file upload将一个文件上传到我的bucket。我相信我已经正确地设置了铲斗: 存储桶名称为ac.testing 此服务器的CORS配置: <?xml version="1.0" encoding="UTF-8"?> < CORSConfiguration xmlns="http

这个问题已经被问过了,但是这个答案对我没有帮助,因为我知道这个URL是正确的,因为它指向的是美国标准的URL,在亚马逊指南中有详细说明

因此,我试图通过angular libraryng file upload将一个文件上传到我的bucket。我相信我已经正确地设置了铲斗:

  • 存储桶名称为ac.testing
  • 此服务器的CORS配置:

    <?xml version="1.0" encoding="UTF-8"?>
      < CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
      < CORSRule>
        < AllowedOrigin>*</AllowedOrigin>
        < AllowedMethod>POST</AllowedMethod>
        < AllowedHeader>*</AllowedHeader>
      < /CORSRule>
    < /CORSConfiguration>
    
    现在返回的错误是:

    编辑3

    环顾四周,amazon不喜欢的标题似乎正在添加到请求中。我在ng文件上传上试过了,但在我自己的机器上没有。解决此问题的方法似乎是删除以下标题:

    method: 'POST',
      headers: {
        'Authorization': undefined
      },
    
    但我还是犯了同样的错误。为什么要将这些标题附加到此请求

    编辑4

    即使有了上面的代码,标题仍然被添加到不同的位置,所以我找到了它并删除了它们。我现在收到的错误是:


    这与CORS无关

    这是因为你的桶的名字里有个点

    如果您的bucket确实是美国标准的(
    example bucket.s3.amazonaws.com
    不一定是“美国标准”URL),那么这就是您需要的:

    var uploadDetails={ url:“”,

    这称为基于路径或路径样式的URL,其中bucket表示为路径的第一个元素,而不是将其包含在主机名中

    如果bucket名称有一个点,并且
    s3,这是必需的。
    需要是
    s3区域。
    对于非美国标准的bucket

    这是通配符SSL/TLS证书的一个限制。S3提供了一个对
    *.S3[-region].amazonaws.com有效的证书,并且此类证书的规则声明
    *
    不能匹配点…因此该证书被视为无效,因此它是一个“不安全响应”

    或者,只需创建一个带有破折号而不是圆点的bucket,代码就可以按原样工作


    由于您使用的是Signature V2,因此任一主机名构造都会为其他相同的请求生成相同的签名。对于Sig V4则不是这样。

    这与CORS无关

    这是因为你的桶的名字里有个点

    如果您的bucket确实是美国标准的(
    example bucket.s3.amazonaws.com
    不一定是“美国标准”URL),那么这就是您需要的:

    var uploadDetails={ url:“”,

    这称为基于路径或路径样式的URL,其中bucket表示为路径的第一个元素,而不是将其包含在主机名中

    如果bucket名称有一个点,并且
    s3,这是必需的。
    需要是
    s3区域。
    对于非美国标准的bucket

    这是通配符SSL/TLS证书的一个限制。S3提供了一个对
    *.S3[-region].amazonaws.com有效的证书,并且此类证书的规则声明
    *
    不能匹配点…因此该证书被视为无效,因此它是一个“不安全响应”

    或者,只需创建一个带有破折号而不是圆点的bucket,代码就可以按原样工作


    由于您使用的是Signature V2,因此任何一个主机名构造都会为其他相同的请求生成相同的签名。对于Sig V4则不是这样。

    实际问题有两个方面:

    • 标题不正确,因为“授权标题即使从代码的Upload.Upload部分删除后仍然存在。 为了解决这个问题,我必须从我的api.injector代码中删除这个对象——这就是它被添加的地方

      delete config.headers['Authorization']
      
    • 从EDIT3开始,我生成的签名是错误的,所以我必须重新生成它


    感谢Michael的帮助。

    实际问题有两个方面:

    • 标题不正确,因为“授权标题即使从代码的Upload.Upload部分删除后仍然存在。 为了解决这个问题,我必须从我的api.injector代码中删除这个对象——这就是它被添加的地方

      delete config.headers['Authorization']
      
    • 从EDIT3开始,我生成的签名是错误的,所以我必须重新生成它


    谢谢Michael的帮助。

    谢谢Michael的回复。我创建了一个全新的bucket,名为“ac-k24-uploads”它与前面提到的bucket具有相同的策略和CORS设置。我还更改了url以匹配您所说的内容-请参阅我的第二次编辑。@Michael,谢谢,我遇到了一个类似的问题,原因是bucket名称中有一个
    ,将其更改为
    -
    ,并更改了url格式,使bucket名称成为后缀前缀广告也起到了作用。:-)谢谢你的回复,迈克尔。我创建了一个名为“ac-k24-uploads”的全新bucket它与前面提到的bucket具有相同的策略和CORS设置。我还更改了url以匹配您所说的内容-请参阅我的第二次编辑。@Michael,谢谢,我遇到了一个类似的问题,原因是bucket名称中有一个
    ,将其更改为
    -
    ,并更改了url格式,使bucket名称成为后缀前缀的广告也起了作用。:-)
    method: 'POST',
      headers: {
        'Authorization': undefined
      },
    
    delete config.headers['Authorization']