Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.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
Amazon s3 AWS CloudFront访问控制允许原始和签名Cookie/URL_Amazon S3_Amazon Cloudfront_Amazon Signed Cookie - Fatal编程技术网

Amazon s3 AWS CloudFront访问控制允许原始和签名Cookie/URL

Amazon s3 AWS CloudFront访问控制允许原始和签名Cookie/URL,amazon-s3,amazon-cloudfront,amazon-signed-cookie,Amazon S3,Amazon Cloudfront,Amazon Signed Cookie,我被S3+Cloudfront+签名URL的CORS卡住了 我的用例是: 第一个故事(成功): 我有一个带有Cloudfront的Amazon S3存储桶。可通过DOMAIN1/file链接访问文件 我编写了一个简单的testjs脚本,从DOMAIN1获取文件,并将其放在DOMAIN2/test.html 我能够成功地获取文件CORS很好 第二个案例(也成功): 我通过使用签名Url限制云前端分发 起初,我试图访问域1中的一个文件,但没有签名。访问被拒绝。没关系,因为请求没有签名 我已经创建了一

我被S3+Cloudfront+签名URL的CORS卡住了

我的用例是:

第一个故事(成功):

  • 我有一个带有Cloudfront的Amazon S3存储桶。可通过
    DOMAIN1/file
    链接访问文件

  • 我编写了一个简单的testjs脚本,从DOMAIN1获取文件,并将其放在
    DOMAIN2/test.html

  • 我能够成功地获取文件CORS很好 第二个案例(也成功):

  • 我通过使用签名Url限制云前端分发
  • 起初,我试图访问域1中的一个文件,但没有签名。访问被拒绝。没关系,因为请求没有签名
  • 我已经创建了一个签名URL,能够成功下载文件
  • 第三个案例(失败)

  • 我将签名的url(从第二个案例)放入
    DOMAIN2/test.html
    test脚本
  • 并且总是出现
    No“Access Control Allow Origin”标题
    错误
  • 因此,Cloudfront在受限分发的情况下不发送头

    CORS xml是:

    <CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <CORSRule>
        <AllowedOrigin>http://*</AllowedOrigin>
        <AllowedOrigin>https://*</AllowedOrigin>
        <AllowedMethod>GET</AllowedMethod>
        <AllowedMethod>HEAD</AllowedMethod>
        <MaxAgeSeconds>10</MaxAgeSeconds>
        <AllowedHeader>*</AllowedHeader>
    </CORSRule>
    
    
    http://*
    https://*
    得到
    头
    10
    *
    


    CloudFront/S3/IAM设置中一定有问题。如何修复它?

    解决方案似乎是设置对S3存储桶的正确访问权限。取而代之的是“Everyone”访问,需要“任何AWS认证用户”或“Cloudfront适当用户”。

    我转到
    Cloudfront发行版->MYPRIVATECLOUDFRONTID->Behaviors
    ,添加了以下内容:

    Path Pattern = path/to/my/file.ext
    
    Forward Headers = Whitelist
    
    并添加到白名单标题:来源

    不要忘记取消选中选项
    限制查看器访问(使用签名URL或
    签名Cookies)
    -对我来说,它被标记为不限制,即使我已将整个缓存标记为限制


    我的下一步是按需自动设置此白名单。

    如果您可以从失败案例中捕获请求和响应标题,则更容易准确地了解您正在报告的内容。