可以使用XDomainRequest来加载和绘制图像吗?

时间:2013-06-06 15:57:14

标签: javascript internet-explorer canvas cors xdomainrequest

我正在从不同域上的服务器加载图像。图像启用了CORS(它们具有此标题:Access-Control-Allow-Origin: *)。在现代浏览器中,使用image.crossOrigin = '',我可以安全地将它们绘制为<canvas>

我也希望能够在Internet Explorer 9上执行相同的操作.IE9在图像上不支持crossOrigin。对于使用XDomainRequest标头的跨域请求,它确实有Access-Control-Allow-Origin

是否可以通过XDomainRequest加载PNG并将其绘制到画布上?

1 个答案:

答案 0 :(得分:2)

在IE中使用XDomainRequest下载图像的并发症

IE只允许XdomainRequest使用纯文本数据(ARGH !!):http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx

IE还将使用其FindMimeFromData嗅探所有传入数据。因此,即使你去除url的类型前缀(data:image / png; base64),这个嗅探器也会意识到你的base64文本实际上是一个图像并对其进行相应处理:http://msdn.microsoft.com/en-us/library/ms775147(v=vs.85).aspx

可能的尝试是以某种方式重新编码base64文本以混淆嗅探器。

MS显然意识到他们的CORS策略限制太多,并且正在计划为他们的webAPI添加扩展的CORS支持:http://channel9.msdn.com/Shows/Web+Camps+TV/ASPNET-Web-API-and-CORS-Support

否则,您将获得当前使用自己的网络服务器弹出图像的解决方案,这样它们就不再是X域了。