我有一个运行在 pixie.strd6.com 的网站,并通过 CNAME 映射到 Amazon S3 上的图像,路径为 images.pixie.strd6.com。
我想将这些图像绘制到 HTML5 画布上并调用 getImageData 方法,但是它会抛出 Error: SECURITY_ERR: DOM Exception 18
。
我尝试设置 window.domain = "pixie.strd6.com"
,但没有效果。
此外,$.get("http://dev.pixie.strd6.com/sprites/8516/thumb.png?1293830982", function(data) {console.log(data)})
也会抛出错误:XMLHttpRequest cannot load http://dev.pixie.strd6.com/sprites/8516/thumb.png?1293830982. Origin http://pixie.strd6.com is not allowed by Access-Control-Allow-Origin.
理想情况下,HTML5 画布不应该阻止从子域名中调用 getImageData
。我尝试在 S3 中设置 Access-Control-Allow-Origin header,但未成功。
非常感谢任何帮助或解决方法。
<img>
标签发送带有你的cookie的请求来获取这些图片。问题不在于被XSS攻击的网站被入侵了,而在于任何网页都可以使用你的身份验证cookie来获取和读取画布上的图片。 - apsillersdocument.imd={};
然后执行document.imd[elementId] = document.getElementById(elementId).getContext("2d").getImageData(0,0,img.width, img.height);
,并且只有在此之后才运行document.getElementById(elementId).getContext("2d").drawImage(img,0,0)
,那么浏览器会怎么做,如果我在图像数据被污染之前获取了对它的引用? - Arioch 'The