我在Cloudfront中创建了一个私有发行版,以防止热链接。我设法用带签名的URL创建了到我的对象的链接,现在工作得很好。
我唯一担心的是,我的css样式表中的图像链接不起作用,因为它们没有签名。所以如果我有,举个例子:
background-image: url('../img/bg.png');背景图像不会显示出来,因为样式表不包含签名的url,因此Cloudfront拒绝提供内容。
我能做些什么来防止这种情况发生吗?
发布于 2012-10-05 16:20:57
让我后退一步,问一个基本的问题:你真的担心人们热链接你的图片吗?真的?如果有人这样做了,它会对你产生什么样的现实影响?真的?
如果你有一个合法的理由来阻止人们热链接,那么我不太确定any CDN服务(在这个例子中是CloudFront)对你来说是正确的解决方案。
嘿,我只是说实话,…
发布于 2012-08-27 22:39:02
有几种方法,每一种都有缺点。
与静态CSS文件不同,您可以通过模板(或其他一些将资源映射到CloudFront位置的智能方法)生成它。通过使用Last-Modified和max-age缓存头,您可以在这里使用一定程度的缓存。最难的解决方案,但可以说是最好的保护。
为所有CSS资源设置一个重定向路径,基本上是一个小脚本来重写CF的路径(注意只重写CSS资源,不重写其他内容)。这允许您保留当前的静态CSS,但会打开重定向脚本的潜在热链接。
介于这两者之间的东西可能是cron脚本,它会生成带有链接的静态CSS文件,该文件将在1.5天内过期,以减少服务器负载。
发布于 2012-10-06 23:23:42
对css文件使用私有发行版通常是一个非常糟糕的主意,因为向css添加(可能不断变化的)过期时间和签名会阻止浏览器缓存它们,因此首先会大大降低使用Cloudfront的有用性。
即使你使用很长的过期时间,那么那些拼命想要热链接你的css背景图像的人会简单地设置一个脚本来抓取你的css文件并从那里提取图像urls。
https://stackoverflow.com/questions/12095100
复制相似问题