Amazon CloudFront - 限制MP3在特定网站上播放

时间:2015-01-05 21:21:29

标签: javascript html5 amazon-s3 amazon-cloudfront mediaelement.js

我一直在尝试弄清楚如何在与Cloudfront配对的Amazon S3存储桶中获取mp3文件,以允许我直接在我的网站上传输文件但不允许任何人通过查看源来获取mp3的源URL页面代码,然后共享或提取链接。

现在,我正在使用来自mediaelements.js的html5 mp3播放列表,而mp3文件始终位于源代码中。这很好,但我想只允许mp3在我的特定网站上播放,如果链接从源代码复制并在其他浏览器中访问,则应显示访问受限错误。

我厌倦了更新云端策略在页面加载后的30秒内过期,但这最终会阻止文件在30秒结束后播放,如果用户之前没有播放其中一个曲目过期。

是否有另一种方法可以在不对云端链接进行时间过期的情况下执行此操作?

3 个答案:

答案 0 :(得分:1)

我认为这正是您所寻找的:http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-signed-urls-overview.html

基本上,您可以从服务中动态提供URL,CloudFront将验证签名。您还可以设置非常短的过期时间,以避免广泛分发您的URL,并限制可能访问URL的IP地址(请参阅参考文档中的自定义策略部分)。

答案 1 :(得分:0)

不幸的是,你做不到。 MediaElements.js可能托管在您的网站上,但它正在用户的计算机上运行。因此,虽然看起来他们正在通过您的网站播放MP3,但他们实际上只是从您的网站下载网址并使用计算机上运行的代码播放。

您可以编写服务器端代码,然后返回S3并在返回之前检索MP3,就像它是服务器上托管的文件一样,但仍然不会限制人们复制该链接,除非某种类型的在返回文件之前使用了session,以确保它们通过您的站点登录。

但这意味着您无法使用CloudFront。这是妥协。通过CDN分发您的MP3并通过在靠近用户的边缘位置托管文件来提高下载性能,或利用服务器端安全性来确保您的IP不是由不道德的第三方托管。

答案 2 :(得分:0)

在后端(私有方法)上只需要很少的行向导编码就可以了,我更喜欢使用免费的层EC2实例并配置处理可流传输内容的环境,以便通过这种方式提供一切限制页面给某人去leech或使用IDM来下载你的mp3文件。

Example : Grooveshark.com   

然而,还有其他一些方法,如欧文回答。