如何解决S3-Cloudfront-访问控制允许来源标头
我有一个s3存储桶,用于存储hls文件,
而且我需要能够在播放器中流式传输这些文件,
如果使用默认的s3网址,则可以,但是并不安全。
我阅读并发现您可以使用CloudFront并创建一个签名的URL或cookie。 然后,我创建了具有以下选项的新发行版
Origin Domain Name: Name of my s3 bucket
Restrict Bucket Access: yes
Create a New Identity
Yes,Update Bucket Policy
Allowed HTTP Methods: GET,HEAD,OPTIONS
Cached HTTP Methods: select checkbox OPTIONS
Use legacy cache settings
And then I selected whitelist and choose
Access-Control-Request-Headers
Access-Control-Request-Method
Origin
最后我选择了
Restrict Viewer Access (Use Signed URLs or Signed Cookies): yes
创建发行版后,我尝试通过以下方式访问文件 zxxxx.cloudfront.net/ls/600/10/playlist.m3u8
然后我得到缺少键对ID查询参数或cookie值
在此之前,我认为一切正常。
我创建了一个ruby脚本来获取那些证书。
CloudFront-Policy
CloudFront-Signature
CloudFront-Key-Pair-Id
如果那样的话,我尝试使用Cookie或url访问文件
zxxxx.cloudfront.net/ls/600/10/playlist.m3u8?Policy=&Signature=&Key-Pair-Id
我能够下载文件,这意味着一切都可以正常工作。
问题是,当我尝试通过Rails应用访问文件时,收到消息:已被CORS政策阻止
我已阅读,发现请求应该来自同一域才能发送Cookie
然后,我将一个CNAME添加到我的Cloudfront发行版中,名为cloud.example.com
在本地,我在名为dev.example.com的主机文件中创建了一条记录,端口80
再次尝试播放文件,但仍然出现相同的错误:
'http://cloud.example/hls/600/10/playlist.m3u8' from origin 'http://dev.example.com' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
存储桶中的cors是
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>
<AllowedHeader>Range</AllowedHeader>
</CORSRule>
</CORSConfiguration>
有人可以帮助我吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。