【问题标题】:Amazon CloudFront - Restrict MP3 to play on specific websiteAmazon CloudFront - 限制 MP3 在特定网站上播放
【发布时间】:2015-03-03 11:56:55
【问题描述】:

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

现在,我正在使用来自 mediaelements.js 的 html5 mp3 播放列表,并且 mp3 文件始终在源代码中。没关系,但我只想允许 mp3 在我的特定网站上播放,如果链接从源复制并在不同的浏览器中访问,它应该会显示访问受限错误。

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

是否有另一种方法可以做到这一点,而无需在云端链接上设置时间到期?

【问题讨论】:

  • HTTP Access-Control-Allow-Origin 标头在这种情况下不起作用吗?

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


【解决方案1】:

很遗憾,你不能。 MediaElements.js 可能托管在您的网站上,但它正在用户的计算机上运行。因此,尽管他们看起来像是通过您的网站播放 MP3,但实际上他们只是从您的网站下载一个 URL 并使用在他们计算机上运行的代码进行播放。

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

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

【讨论】:

  • 这是有道理的。我想知道是否可以在用户的​​浏览器缓存中专门加载 mp3 文件,以便在云端链接过期之前加载它们?
【解决方案2】:

我想这就是你要找的东西:http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-signed-urls-overview.html

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

【讨论】:

    【解决方案3】:

    在后端(私有方法)上只需要几行向导编码就可以了,我更喜欢使用免费层 EC2 实例并配置环境来处理可流式内容,以便以这种方式清晰地交付所有内容,为某人提供限制页面去水蛭或使用 IDM 下载你的 mp3 文件。

    Example : Grooveshark.com   
    

    但是还有一些其他方法,例如 Owain answer。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-08
      • 1970-01-01
      • 2012-02-24
      相关资源
      最近更新 更多