我当时的印象是Internet 10完全支持CORS,但现在我不确定了。
我们有一个JS/HTML5 5应用程序,它使用多个域,并读取图像数据。我们正在从另一个域中加载JS中的图像,imageDraw()将图像加载到画布上,然后在画布上使用getImageData。(我们不使用跨域XMLHttpRequests)。为此,我们必须在为映像提供服务的服务器上设置响应头:
access-control-allow-origin: *
access-control-allow-credentials: true
并在加载之前将其设置在JS中的图像对象上:
image.crossOrigin = 'Anonymous'; //Also tried lowercase
--这对于所有新浏览器都很好,除了IE10 之外,当我们试图读取数据时,IE10会引发安全错误。
SCRIPT5022: SecurityError
,IE10是否还需要做更多的工作来将这些跨域图像不受污染?
更新:
我注意到了这个答案之前的一个问题。Interestingly 这个JSFiddle 也不适用于IE10 --有人能确认这在他们的IE10?中不起作用吗?
发布于 2013-11-01 20:02:58
不幸的是,即使正确设置了CORS头,IE10仍然是唯一不支持画布图像CORS的流行浏览器。但可以通过XMLHttpRequest找到解决办法:
var xhr = new XMLHttpRequest();
xhr.onload = function () {
var url = URL.createObjectURL(this.response), img = new Image();
img.onload = function () {
// here you can use img for drawing to canvas and handling
// ...
// don't forget to free memory up when you're done (you can do this as soon as image is drawn to canvas)
URL.revokeObjectURL(url);
};
img.src = url;
};
xhr.open('GET', url, true);
xhr.responseType = 'blob';
xhr.send();
发布于 2013-06-09 17:58:32
确认: IE10不支持HTML5画布中的CORS图像。
编辑
对不起,我以前没有处理过CORS图像,我认为这个问题是关于AJAX请求的。
根据Mozilla开发人员网络,您需要将image.crossOrigin
设置为anonymous
或use-credentials
。另外,根据今天的页面,IE、Safari或Opera不支持这些属性。这个测试被用来证明IE9不支持它,而且似乎在IE10中同样的测试仍然失败,所以即使Safari和Opera在文章编写后增加了支持,IE10仍然很可能仍然缺乏支持。
我能给您的唯一提示是,一般来说,允许凭据是带有通配符允许原产地的不相容。删除“允许-凭据”或在“允许来源”中回显“请求源”。
下面是AJAX调用,而不是图像或视频画布资源。
早期版本的IE10已知有AJAX错误,
所以可能是另一个浏览器漏洞。再说一次,CORS很难做到这一点。我推荐以下步骤来调试CORS问题。
用于CORS测试客户端和服务器( Google的Python)的完整代码可在https://github.com/rapportive-oss/cors-test上使用,以帮助您入门。
https://stackoverflow.com/questions/16956295
复制相似问题