我正在从不同域上的服务器加载图像。图像启用了CORS(它们具有此标题:Access-Control-Allow-Origin: *
)。在现代浏览器中,使用image.crossOrigin = ''
,我可以安全地将它们绘制为<canvas>
。
我也希望能够在Internet Explorer 9上执行相同的操作.IE9在图像上不支持crossOrigin
。对于使用XDomainRequest
标头的跨域请求,它确实有Access-Control-Allow-Origin
。
是否可以通过XDomainRequest
加载PNG并将其绘制到画布上?
答案 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域了。