ome*_*ooq 5 amazon-s3 same-origin-policy amazon-web-services
我有一个 S3 存储桶,里面有一个文件。我只希望某个域能够访问该文件。我在存储桶上尝试了一些策略,但都不起作用,这个来自AWS 文档。
{
"Version": "2012-10-17",
"Id": "http referer policy example",
"Statement": [
{
"Sid": "Allow get requests originated from www.example.com and example.com",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my-bucket-name/*",
"Condition": {
"StringLike": {
"aws:Referer": [
"http://www.phpfiddle.org/*",
"http://phpfiddle.org/*"
]
}
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
为了测试该文件,我在 phpfiddle.org 上托管了一个代码并拥有此代码。但是我既不能通过直接从浏览器访问,也不能通过 phpfiddle 代码访问该文件。
<?php
$myfile = file_get_contents("https://s3-us-west-2.amazonaws.com/my-bucket-name/some-file.txt");
echo $myfile;
?>
Run Code Online (Sandbox Code Playgroud)
这里是文件的权限,bucket本身也有同样的权限+上面的策略。
这只是一个示例链接,而不是实际工作的链接。
限制访问特定 HTTP Referrer存储桶策略仅允许从您所在域的页面访问您的文件(HTTP Referrer 是您的域)。
假设您有一个域名为(www.example.com 或 example.com)的网站,其中包含指向您的 S3 存储桶 examplebucket 中存储的照片和视频的链接。
您无法从浏览器直接访问您的文件(直接在浏览器中键入文件 URL)。您需要从域中的任何页面创建链接/图像/视频标签。
如果您想file_get_contents
从 S3 访问,则需要创建一个新策略以允许您的服务器 IP(请参阅示例)。将IP地址更改为您的服务器IP。
另一个解决方案是使用适用于 PHP 的 AWS 开发工具包将文件下载到本地。您还可以生成预签名 URL,以允许您的客户在有限的时间内直接从 S3 下载。
归档时间: |
|
查看次数: |
8283 次 |
最近记录: |