禁止使用 s3 通过 Cloudfront 提供的字体
Posted
技术标签:
【中文标题】禁止使用 s3 通过 Cloudfront 提供的字体【英文标题】:Fonts served over Cloudfront from s3 are forbidden 【发布时间】:2013-05-09 10:46:47 【问题描述】:我正在使用 Cloudfront 来提供存储在 s3 中的资产。大多数文件都可以正常工作,但有些文件不能,特别是我的字体。
我完全不知道为什么:
https://xxxxxx.cloudfront.net/assets/application-xxxxxxx.js
返回很好,但是
https://xxxxxx.cloudfront.net/assets/fontawesome-webfont.woff?v=3.1.0
返回:
<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>xxxxxx</RequestId>
<HostId>xxxxxx</HostId>
</Error>
有人知道这是为什么吗?我怀疑它与 CORS 有关,但我使用的是指定的 CORS in this answer。并且该请求在所有浏览器上都被禁止返回,而不仅仅是 Firefox。
任何帮助将不胜感激。
【问题讨论】:
听起来有些文件不公开。 我也是这么想的,但是所有其他文件都有类似的权限,包括这个。每个人的权限包括打开/下载。不过感谢您的回复。 @rurabe 你让它工作了吗?我在使用 Firefox 时遇到了这个问题,字体无法与 S3 或 cloudfront 一起使用 【参考方案1】:修复您的 S3 权限后,您需要使 CloudFront 的来自该 URL 的错误消息缓存无效。
或等待 24 小时。随便哪一个。
【讨论】:
我也希望是这样,但 24 小时后仍然无法正常工作。不过还是谢谢...【参考方案2】:当您使缓存失效时,您不能只更新资产。我必须创建一个全新的云端分发包。
我建议这样做。创建一个新的云端资产包,将您的服务器指向它并删除旧的。
【讨论】:
以上是关于禁止使用 s3 通过 Cloudfront 提供的字体的主要内容,如果未能解决你的问题,请参考以下文章
Cloudfront 提供通过 AWS CDK Python 为 S3 存储桶来源创建的访问被拒绝响应,无需公共访问
在 S3 和 cloudfront 上使用 rails carrierwave 私有文件
S3/CloudFront,使用标题“Cache-Control: max-age=365000000, immutable”提供所有文件