2016-09-22 146 views
0

我使用ajax方法将文件上传到S3。我的文件成功上传(获得204代码),但仍然(ajax进入失败的方法,而不是成功)获取错误, 没有'Access-Control-Allow-Origin'标题出现在请求的资源。AWS S3文件上传,得到'Access-Control-Allow-Origin'错误'

我的跨域政策如下,

<?xml version="1.0" ?> 
<cross-domain-policy> 
<allow-access-from domain="*" /> 
<allow-http-request-headers-from domain="*" headers="*"> 
</allow-http-request-headers-from> 
</cross-domain-policy> 

我的AJAX方法,

$.ajax({ 
    url : url, 
    type: "POST", 
    data: data, 
    contentType: false, 
    processData: false, 
    success: function(){ 
     console.log("success") 
    }, 
    error: function(){ 
     console.log("error") 
    } 
    }) 
+0

如果您直接在浏览器中调用图像URL,是否能够看到图像? – user6838959

+0

不,但当我尝试访问s3浏览器,并复制特定图像的链接并粘贴在浏览器中可以看到图像后。 – Shruti

+0

图像权限设置是否正确?从aws控制台登出后复制的网址是否正常工作? – user6838959

回答

0

请仔细阅读本文件http://docs.aws.amazon.com/AmazonS3/latest/UG/EditingBucketPermissions.html

下面是示例XML,你可以试试。将examplesite.com更改为您的。右键单击存储桶并转到“权限”选项卡,然后单击“编辑CORS配置”

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