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

Can XDomainRequest be used to load and draw images?

本文关键字:绘制 图像 加载 XDomainRequest      更新时间:2023-09-26

我正在加载来自不同域的服务器的图像。这些图像是启用cors的(它们有这个标题:Access-Control-Allow-Origin: *)。在现代浏览器中,使用image.crossOrigin = '',我可以安全地将它们绘制到<canvas>

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

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

在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

否则,你就只能使用当前的解决方案,从你自己的web服务器上反弹图像,这样它们就不再是x域了