跨域图片问题多发生在与canvas相关的操作上,如下代码:
var canvas = document.getElementById('canvas')
var context = canvas.getContext('2d');
// img.crossOrigin = 'anonymous';
var img = new Image();
img.onload = function () {
canvas.width = this.width
canvas.height = this.height
context.drawImage(this, 0, 0, this.width, this.height);
};
img.src = 'http://liubo-test.ks3-cn-beijing.ksyuncs.com/post-renamed.jpg'
如果canvas调用getImageData、toDataUrl、toBlob方法就会出现不同的错误异常
解决办法:将图片对象的crossOrigin设置为''即可,(此处可以设置为除了'use-credentials'的任意值)
注:crossOrigin 存在兼容性问题对于不支持 crossOrigin 的浏览器(IE 10及以下版本不支持,Android 4.3 及以下版本不支持)可以使用 XMLHttprequest 和 URL.createObjectURL() 来做兼容,参考测试示例 Ajax 解决 Canvas 图片跨域问题。