【问题标题】:Can XDomainRequest be used to load and draw images?XDomainRequest 可以用来加载和绘制图像吗?
【发布时间】:2013-06-06 15:57:13
【问题描述】:

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

我希望在 Internet Explorer 9 上也能做到这一点。IE9 不支持图像上的crossOrigin。它确实有XDomainRequest 用于使用Access-Control-Allow-Origin 标头的跨域请求。

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

【问题讨论】:

    标签: javascript internet-explorer canvas xdomainrequest


    【解决方案1】:

    在 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 域了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-15
      相关资源
      最近更新 更多