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

时间:2016-06-17 05:41:23

标签: amazon-s3 jwplayer amazon-cloudfront

我使用 HLS 使用 Amazon S3 Cloud Front 使用 JWplayer (使用Rails)

我使用签名URL加密URL并创建了Amazon Cloud Front文档中给出的Origin Access Identity。 签名网址生成正常。

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

我认为JW Player正试图访问' crossdomain.xml'没有签名哈希的文件。所以,它得到了这个错误。

我在演示JWplayer Stream测试器中测试了我的文件,这是我在控制台中遇到的错误。

Fetch API cannot load http://xxxxxxxx.cloudfront.net/xxx/1/1m_test.ts. 

No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://demo.jwplayer.com' is therefore not allowed access. The response had HTTP status code 403.

If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.

Here is the ScreenShot.

这是ScreenShot。

请帮帮我。谢谢。

This is the link I followed to configure my CloudFront Distribution

1 个答案:

答案 0 :(得分:2)

我遇到了同样的问题(但是使用了Flowplayer)。我还不确定安全风险(如果需要所有步骤的话),但我得知它运行:

  • 在crossdomain.xml上添加权限,供所有人打开/下载
  • 仅为crossdomain.xml在cloudfront发布中添加行为而不限制访问权限(在具有受限访问权限的*行为之上)
  • 然后我注意到在存储桶中,指向crossdomain.xml的链接类似于" https://some-server.amazonaws.com/bucket.name/%1Fcrossdomain.xml" (注意奇怪的%1F)并且当我继续重命名crossdomain.xml时,我可以在名字的第一个位置删除一个不可见的字符(我没有制作crossdomain.xml,所以我不确定怎么回事?

编辑: 我还运行了hlsjs并使得crossdomain.xml可以以某种方式禁用CORS请求。我还在调查这个。