3

这是我的 Amazon S3 存储桶策略的样子(部分使用AWS Policy Generator 生成):

{
  "Id": "Policy1350503700228",
  "Statement": [
    {
      "Sid": "Stmt1350503699292",
      "Action": [
        "s3:GetObject"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::files.example.com/*",
      "Condition": {
        "StringLike": {
          "aws:Referer": [
            "http://example.com/*",
            "http://www.example.com/*"
          ]
        }
      },
      "Principal": {
        "AWS": [
          "*"
        ]
      }
    }
  ]
}

存储桶策略应该做的是 - 如果直接访问存储桶中的任何文件或从(www.)example.com.

它似乎有效,除了 Chrome 似乎对以这种方式提供的 PDF 文件存在问题(例如,图像加载得很好)。因此,来自(具有基于引用的限制)的任何 PDFfiles.example.com似乎都在 Chrome 中永久加载(最新版本,在 Ubuntu 12.04 上)。另一方面,Firefox 可以快速加载小于 100KB 的 PDF。

关于我/可能做错了什么的任何想法?

PS:如果我右键单击并选择“另存为..”,Chrome 就可以下载该文件。我不明白为什么它不显示它。

4

3 回答 3

2

我检查了 Chrome 上的开发工具,发现 Chrome pdf 插件以多个块请求 pdf。第一个块将具有正确的引用,但所有后续块将具有https://s3.amazonaws.com/....而不是http://mywebsite.com. 添加https://s3.amazonaws.com/*到存储桶策略列表中解决了这个问题。

于 2013-08-03T18:22:11.937 回答
0

进入您的存储桶并仔细检查文件(元数据选项卡)上指定的 MIME 类型。它应该是Content-Type: application/pdf

于 2012-10-20T05:25:39.757 回答
0

您可以将 response-content-disposition 设置为“附件”,如本文所述:https ://stackoverflow.com/a/9099933/568383

于 2013-03-14T18:14:02.007 回答