一个现象让我对canvas的Crossorigin产生疑问!!
网上找到的资料说canvas要绘制跨域图片的话,不但要图片所在服务器设置跨域权限,还要为canvas设置一个CrossOrigin="anonymous",由于项目原因,我部署了一个测试服务器,并且设置为不允许跨域,然后我根据w3cschool提供的教程,写了一个最简单的canvas绘制图片的代码,图片地址用的是我部署的服务器中的图片。然后我在本地部署了我的代码,发现可以显示图片?这是为什么?!!不是被限制跨域了吗,难道我理解错误? 下面是我贴的代码:
<canvas id="myCanvas" width="200" height="100" style="border:1px solid #c3c3c3;"></canvas>
<script type="text/javascript">
var c=document.getElementById("myCanvas");
var cxt=c.getContext("2d");
var img=new Image();
img.src="http://119.23.213.80:8080/g3.png";
img.onload = function() {
cxt.drawImage( img, 0, 0 );
}
PS我是通过服务端设置 access-control-allow-origin来开放或关闭跨域的,我跟同事测试了几遍了,开开关关,发现论如何都可以显示图片,但是有一点值得注意的是:开发者工具的network中 header中的 response header中是没有access-control-allow-origin:“*”的,因为服务器没设置, 而header后面的preview是有图片预览的,preview后面的response是没有数据的,意思就是服务器没有响应,但是图片也没有显示来自缓存 from cache,因为我用的ctrl+f5。
说以这个Crossorigin用处是什么?哪些情况下才需要用?是否我理解错误了,求科普。