2013-02-23 84 views
7

我试图使用blur.js来模糊用户上传的图像,并将图像存储在Amazon S3上。我给自己定了什么,我认为是正确的CORS配置,但图像不能模糊,我得到这个错误在浏览器:S3跨源资源共享不起作用

Unable to get image data from canvas because the canvas has been tainted by cross-origin data. 

这里是我的CORS配置:

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

任何想法有什么不对?

+0

发布您的HTML/JS的消毒版本的任何机会使用图像上“匿名”? – 2013-02-24 14:58:59

回答

3

我怀疑你没有使用CORS支持所需的正确的S3端点地址格式。

即S3水桶支持这两种格式:

  1. http://bucket.s3.amazonaws.com/object
  2. http://s3.amazonaws.com/bucket/object

但只有第一个URL将与CORS工作,根据documentation

使用CORS,您可以将您的存储桶配置为显式请启用来自website.s3-website-us-east-1.amazonaws.com的跨域请求。

+0

啊,我现在试试看看是否解决了这个问题。 – 2013-02-26 05:04:30

5

我刚刚做完了。基本上,您可以按照这些步骤来编辑您的S3存储桶权限并使其工作。如果您需要更多帮助,请在下面留言。

1)登录到AWS管理控制台,打开在https://console.aws.amazon.com/s3/

2)在水桶名单亚马逊S3控制台中,打开您要查看,然后单击“添加CORS配置”,其性质

amazon-screen-shot

3)写你愿意标签之间添加的规则<CORSConfiguration>

<CORSConfiguration> 
    <CORSRule> 
    <AllowedOrigin>*</AllowedOrigin> 
    <AllowedMethod>GET</AllowedMethod> 
    <MaxAgeSeconds>3000</MaxAgeSeconds> 
    <AllowedHeader>*</AllowedHeader> 
    </CORSRule> 
</CORSConfiguration> 

您可以了解更多关于规则:http://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html

4)指定crossorigin =你会在你的画布

+4

亚马逊S3似乎没有回应任何这些变化...... – Tyguy7 2014-06-19 22:24:51

+1

' *'为我做了这些 – awidgery 2015-06-12 16:11:15