首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何调试CORS错误

如何调试CORS错误
EN

Stack Overflow用户
提问于 2013-08-24 00:38:09
回答 1查看 1.6K关注 0票数 3

我试图使用跨源资源共享从Amazon获取图像,这样我就可以使用S3 ()方法。

在S3上,我将桶上的CORSconfiguration设置为:

代码语言:javascript
复制
<?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>
        <AllowedMethod>PUT</AllowedMethod>
        <MaxAgeSeconds>3000</MaxAgeSeconds>
        <AllowedHeader>*</AllowedHeader>
    </CORSRule>
</CORSConfiguration>

当canvas.toDataURL()抛出安全错误代码18时,我猜是因为图像必须装载一个"crossOrigin“属性集。

不过,无论我如何从S3加载映像,例如:

代码语言:javascript
复制
<img src="http://s3.amazonaws.com/storybookstorage/wood.png" crossOrigin="anonymous">

当我加载这个映像时,Chrome会给出一个错误:

跨源资源共享策略拒绝跨源图像加载。

有人能帮我找出出什么问题了吗,或者我怎么能找出问题出在哪里?

图像请求的标题(来自chrome dev tools):

请求:

代码语言:javascript
复制
 GET /storybookstorage/wood.png HTTP/1.1
 Host: s3.amazonaws.com
 Connection: keep-alive
 Cache-Control: max-age=0
 Accept: image/webp,*/*;q=0.8
 If-None-Match: "d5098b2c3d1417da8ccd9764612248ca"
 If-Modified-Since: Thu, 08 Aug 2013 01:10:23 GMT
 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.57 Safari/537.36
 DNT: 1
 Referer: http://0.0.0.0:3000/items/1/
 Accept-Encoding: gzip,deflate,sdch
 Accept-Language: en-US,en;q=0.8

响应:

代码语言:javascript
复制
 Date:Sat, 24 Aug 2013 00:27:56 GMT
 ETag:"d5098b2c3d1417da8ccd9764612248ca"
 Last-Modified:Thu, 08 Aug 2013 01:10:23 GMT
 Server:AmazonS3
 x-amz-id-2:gyR2VMt9hec8HrGvcXvDrrRb/sOm3i/WpUaRdnpr/PY2VoaJigSdA960B0q83zzN
 x-amz-request-id:434E3571705359E9

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-24 19:53:18

好吧,我解决了问题。很难调试,因为浏览器没有提供太多的信息。这是客户端的一个问题-- CORS规范对请求的发出方式非常挑剔。所以在我的例子中,我认为问题是将图像加载到一个图像标记中。

唯一可行的方法是在加载图像之前设置"crossOrigin“属性:

代码语言:javascript
复制
 var grabbed = new Image();
 $(grabbed).attr('crossOrigin', '');
 $(grabbed).attr("src", mySource);

我能够调试的唯一方法是在客户端测试几个不同的设置&不同的配置服务器端,因为头文件很难解释。(客户端的问题可能会使服务器看起来配置不当)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18413763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档