浏览器画布 CORS 支持跨域加载图像操作
问题:哪些浏览器版本支持 Canvas 中使用的跨域图像的 CORS(跨源资源共享)标头?
CORS 可以应用于跨域 XMLHttpRequest 和图像请求。这个问题是关于图像请求我通常会去浏览器版本兼容性http://caniuse.com/cors对这个问题不清楚,谷歌搜索没有产生好的结果。
我确实发现最近的 chrome 开发博客暗示 CORS 支持在现代浏览器中广泛传播,但可能会因为 WebGL 安全问题而中断。
http://blog.chromium.org/2011/07/ using-cross-domain-images-in-webgl-and.html
有关 CORS 的更多详细信息:
我们正在考虑使用 canvas 和 webgl-and.html 的可行性。 W3C 工作草案中描述的具有跨域图像请求的 CORS http://www.w3.org/TR/ cors/#use-cases。 html canvas 使用 CORS 来允许跨域资源使用,其方式类似于 flash 使用 crossdomain.xml 的方式。基本上,我们想要读取/编辑图像数据像素,并且不想使用同源代理服务器。
通常,如果图像跨域加载并与 html canvas 一起使用,则使用 canvas.toDataURL() 等函数访问像素将引发安全错误。但是,如果传递图像的服务器添加了这样的标头,则应该允许跨域使用。
access-control-allow-origin: *
我们最关心的浏览器:
我们计划使用 Flash 解决 IE 缺乏画布支持的问题,因此对于存在 CORS 问题的桌面浏览器我们也可以这样做,但在移动设备上 Flash 不是一个选择,并且在我们的用例中,使用代理来发出同源请求并不是一个选项。所以,我对Andriod、Iphone、IPAD浏览器对CORS的支持特别感兴趣。
QUESTION: What browser versions support CORS (Cross-Origin Resource Sharing) headers for Cross Domain Images used in Canvas?
CORS can apply to both cross domain XMLHttpRequests and to image requests. This question is about image requests My normal go to for browser version compatibility http://caniuse.com/cors is unclear on the issue and google search yields no good results.
I did find a recent chrome development blog implying that CORS support was wide spread in modern browsers but might break because of WebGL security problems.
http://blog.chromium.org/2011/07/using-cross-domain-images-in-webgl-and.html
More detail on CORS:
We're considering the viability of using canvas & CORS with cross domain image requests as described in the W3C Working Draft http://www.w3.org/TR/cors/#use-cases. CORS is used by html canvas to allow cross domain resource usage in a fashion similar to the way flash uses crossdomain.xml. Basically, we want to read/edit the image data pixels and we don't want to use a same origin proxy server.
Normally, if are images loaded cross domain and used with html canvas, accessing pixels using functions like canvas.toDataURL() will throw a security error. However, If the server delivering the image adds a header like this, the cross domain usage should be allowed.
access-control-allow-origin: *
Browsers We Care Most About:
We are planning to work around IE's lack of canvas support using flash, so for desktop browsers with a CORS problem we can do that as well, but on mobile flash is not an option, and using a proxy to make the requests same origin is not an option in our use case. So, I'm particularly interested in Andriod, Iphone, IPAD browser support for CORS.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
测试结果:坏消息,它似乎只适用于 Chrome。
所有其他浏览器(包括 Android Mobile)都会出现如下错误:
移动设备 我测试了 Android(三星 Galaxy 内核版本 2.6.32.9)、Iphone 和 IPAD V1,但在这三个浏览器中均失败。
您可以使用以下 URL 测试您自己的移动设备:
http://maplarge.com/CrossOriginImageTest.html
测试脚本:
Test Results: Bad News, it appears to only work in Chrome.
All other browsers (including Android Mobile) give an error like this:
Mobile Devices I tested Android (samsung galaxy kernel version 2.6.32.9), Iphone and IPAD V1 and it failed in all three.
You can test your own mobile device with this URL:
http://maplarge.com/CrossOriginImageTest.html
The Test Script:
我刚刚在运行 iOS 6 的 iPhone 上在 Safari 和 Chrome 中对此进行了测试,并且您的测试页面通过了测试。我本来可以将此作为评论发布,但我没有选择对您的答案发表评论。
I just tested this on my iPhone running iOS 6 in both Safari and in Chrome and your test page passes the test. I would have posted this as a comment but I am not given the option to post a comment to your answer.
你可以使用 php 来获得你想要的一切,而不需要 CROS,工作示例如下:
You could use php to get all what you want without CROS, working example below: