S3 CORS用于外部访问

时间:2012-12-27 20:29:08

标签: amazon-web-services amazon-s3 cors amazon-cloudfront amazon-route53

我用这个撞到了我的头,希望这是一个愚蠢的疏忽,有人可以帮忙。

我正在使用视网膜jquery插件加载视网膜图形(效果很棒BTW!);但是,它正在查找附加“_2x”的文件 - 这些文件存在并且如果它们托管在我们的服务器上,则工作正常。

问题来自于使用Amazon S3,它将允许我直接链接到该文件;但是,当它试图找到带有视网膜后缀的文件时,它会出现这样的错误:

XMLHttpRequest cannot load http://cloud.mfivem.com/ui/bg/bg_linen_2x.png. Origin http://beta.mfivem.com is not allowed by Access-Control-Allow-Origin.

现在,原始文件存在,视网膜版本也存在 - 这些文件是:

http://cloud.mfivem.com/ui/bg/bg_linen.png
http://cloud.mfivem.com/ui/bg/bg_linen_2x.png

我也尝试了后门文件:

http://mfivem.s3.amazonaws.com/ui/bg/bg_linen_2x.png

这是我为存储桶配置的CORS文件:

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
    <AllowedOrigin>http://test.mydomain.com</AllowedOrigin>
    <AllowedMethod>GET</AllowedMethod>
    <AllowedMethod>PUT</AllowedMethod>
    <AllowedMethod>POST</AllowedMethod>
    <AllowedHeader>*</AllowedHeader>
</CORSRule>

我真的很感激任何建议,考虑到启用视网膜的网站爆炸,我相信其他成员将来会发现这有用。

感谢阅读!

**编辑过的网址**

1 个答案:

答案 0 :(得分:2)

好吧我明白了......

我必须将 HEAD 添加到AllowedMethod,但更重要的是......我必须更改文件的名称并重新加载它们。

我认为在S3和Cache之间没有正确地提取文件;但是,在重命名文件后,修改了允许的方法以包含head,它现在可以完美地运行。

真的很兴奋,因为现在我可以从我们的自定义CNAME服务器提供文件,使用Cloudfront + S3屏蔽冗长且难看的s3地址。

如果您对此有任何疑问,请发表评论,我会尽力帮忙!