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

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

是否可以通过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嗅探所有传入的数据。因此,即使您删除了网址的类型前缀(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域。

关于javascript - 可以使用XDomainRequest加载和绘制图像吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16966758/

10-12 04:09