我正在从其他域上的服务器加载图像。这些图像已启用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/