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 跨域访问,通过带签名URL的CloudFront进行HLS(JWplayer)_Amazon S3_Jwplayer_Amazon Cloudfront - Fatal编程技术网

Amazon s3 跨域访问,通过带签名URL的CloudFront进行HLS(JWplayer)

Amazon s3 跨域访问,通过带签名URL的CloudFront进行HLS(JWplayer),amazon-s3,jwplayer,amazon-cloudfront,Amazon S3,Jwplayer,Amazon Cloudfront,我正在使用HLS与amazons3流媒体,以及cloudfront使用JWplayer(使用Rails) 我使用签名的URL对URL进行加密,并创建了一个源访问标识,如Amazon Cloud Front文档中所示。 已签名的URL生成良好 我的bucket中还有一个'crossdomain.xml'文件,它允许所有来源(我给出了'*') 现在,当我试图从我的存储桶播放我的Hls视频文件时,我遇到了跨域访问被拒绝的问题 我认为jwplayer试图在没有签名哈希的情况下访问“crossdomain

我正在使用HLSamazons3流媒体,以及cloudfront使用JWplayer(使用Rails)

我使用签名的URL对URL进行加密,并创建了一个源访问标识,如Amazon Cloud Front文档中所示。 已签名的URL生成良好

我的bucket中还有一个'crossdomain.xml'文件,它允许所有来源(我给出了'*') 现在,当我试图从我的存储桶播放我的Hls视频文件时,我遇到了跨域访问被拒绝的问题

我认为jwplayer试图在没有签名哈希的情况下访问“crossdomain.xml”文件。所以,它得到了那个错误

我已经在演示版JWplayer Stream tester中测试了我的文件,这就是我在控制台中遇到的错误

Fetch API cannot load http://xxxxxxxx.cloudfront.net/xxx/1/1m_test.ts. 
请求的资源上不存在“访问控制允许来源”标题。
Origin'http://demo.jwplayer.com因此,不允许访问。
响应的HTTP状态代码为403。

如果不透明响应满足您的需要,请将请求的模式设置为“无cors”,以获取禁用cors的资源。

这是截图

请帮帮我。多谢各位


我也遇到了同样的问题(但与Flowplayer有关)。我还不确定是否存在安全风险(以及是否需要所有步骤),但我使用了以下工具:

  • 添加对crossdomain.xml的权限以供所有人打开/下载
  • 在cloudfront发行版中仅为crossdomain.xml添加行为,而不限制访问(高于*的行为,限制访问)
  • 然后我注意到在bucket中,到crossdomain.xml的链接类似于“”(注意奇怪的%1F),当我对crossdomain.xml进行重命名时,我可以删除名称第一个位置上的一个不可见字符(我没有创建crossdomain.xml,所以我不确定这是怎么发生的)
编辑:
我让hlsjs也用这个运行,并使crossdomain.xml可访问,以某种方式禁用了CORS请求。我仍在对此进行调查。

我可以确认这是有效的。只需要第一个和第二个项目符号。我也在Flowplayer中测试了这一点。