我使用Amazon S3存储我网站的图片。我有一个存储桶策略可以阻止其他网站热链接我的图像。
要使此功能生效,我在S3中将文件权限设置为“私有”,然后存储桶策略才会打开访问我网站的权限。
这很好用,但因为文件是“私有的”我无法直接在浏览器中查看图像,这是我想要允许的。
这是政策
{
"Version": "2008-10-17",
"Id": "preventHotLinking",
"Statement": [
{
"Sid": "1",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::mybucket/*",
"Condition": {
"StringLike": {
"aws:Referer": [
"http://mydomain.com/*",
"http://www.mydomain.com/*"
]
}
}
}
]
}
所以,总结一下:
这也会阻止直接访问,因此将http://jbtestyt.s3.amazonaws.com/archie.jpg粘贴到浏览器中不会显示图像(因为它是私有的)。
但我想要显示图像以便直接访问。
可能解决方案是将文件公开,然后拒绝除我列出的所有引用之外的所有引用?但我不确定,也找不到那样的东西。
非常感谢提前。
答案 0 :(得分:0)
我推断你正在寻找一个“本机”S3解决方案,所以这里就是这样。如果你真的想到它,hotlinking本质上是“直接访问”文件。因此,“文件本身设置为私有”将始终确保(至少在AWS上)无论如何都无法直接访问它。这是S3的设计。您建议白名单引用者可能是您仅使用S3实现此目的的唯一直接方式。