存储桶策略后 PDF 文件不会在 Chrome 中加载(在其他浏览器中加载)

Posted

技术标签:

【中文标题】存储桶策略后 PDF 文件不会在 Chrome 中加载(在其他浏览器中加载)【英文标题】:PDF file won't load in Chrome after bucket policy (loads in other browsers) 【发布时间】:2014-04-03 01:11:25 【问题描述】:

我设置了存储桶策略,因此只有从某个网站推荐的用户才能访问我的 Amazon S3 存储中的某个 PDF 文件。

文件设置为私有,存储桶策略似乎运行良好,除了 Chrome 在打开 PDF 文件时卡在加载页面上。不过,我可以通过右键单击链接并保存来下载 PDF。

它也适用于 IE,但在 Safari 和 Firefox 中运行良好。我尝试清除缓存,但没有帮助。

这是我使用的存储桶策略:


"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:::examplebucket/*",
        "Condition": 
            "StringLike": 
                "aws:Referer": [
                    "http://example.com/*",
                    "http://www.example.com/*"
                ]
            
        
    
]

谢谢

【问题讨论】:

怀疑 CORS 问题。检查此线程是否有帮助:***.com/questions/20253472/… 【参考方案1】:

我猜测 Content-Type 响应标头设置不正确。应该是

内容类型:应用程序/pdf

您可以在开发控制台的网络选项卡中查看正在发送的内容。您可以在 S3 控制台中文件属性的元数据部分进行设置。

【讨论】:

以上是关于存储桶策略后 PDF 文件不会在 Chrome 中加载(在其他浏览器中加载)的主要内容,如果未能解决你的问题,请参考以下文章

AWS S3 存储桶策略允许从特定 URL 的访问

AWS S3:更改策略后无法列出存储桶

自动为整个 S3 存储桶设置缓存控制(使用存储桶策略?)

S3 存储桶策略:在公共存储桶中,将子文件夹设为私有

尝试使用 PUT 将 PDF 作为 blob 上传到 S3 存储桶时被禁止 403

为 pdf 文件创建读取流以上传到 s3 存储桶