canvas.toDataURL()导致安全性错误

时间:2013-01-15 00:54:28

标签: html5 apache canvas html5-canvas kineticjs

我通过KineticJS's .toDataURL()方法使用HTML5画布和.toDataURL()函数。画布使用我的用户上传到网站的图像,这些图像存储在不同的计算机和子域farm1.domain.com上。

问题:调用.toDataURL()时,出现错误

SECURITY_ERR: DOM Exception 18 

有解决方法吗?如果用户通过domain.com访问该网页并且该图片位于www.domain.com,我也会遇到同样的问题。

尝试:

我在virtualhost中向httpd.conf添加了以下行,并重新启动了apache服务。

Header add Access-Control-Allow-Origin "http://www.domain.com"
Header add Access-Control-Allow-Origin "http://domain.com"
Header add Access-Control-Allow-Origin "http://farm1.domain.com"

www.domain.com页面访问domain.com上托管的图片时,我仍然遇到同样的错误!在KineticJS中有解决方法吗?

2 个答案:

答案 0 :(得分:1)

您需要将Access-Control-Allow-Origin标题添加到要加载的图像中,而不是加载到它们的页面。有关此标头以及CORS的详细信息,您可能需要阅读“CORS isn't just for XHR”,其中专门讨论了此问题。

答案 1 :(得分:0)

无法解决此错误。从不同域加载到画布中的图像将引发此错误,因为当前由每个浏览器实现。在您的情况下,图像应存储在同一个域中,您不会得到例外。