我通过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中有解决方法吗?
答案 0 :(得分:1)
您需要将Access-Control-Allow-Origin
标题添加到要加载的图像中,而不是加载到它们的页面。有关此标头以及CORS的详细信息,您可能需要阅读“CORS isn't just for XHR”,其中专门讨论了此问题。
答案 1 :(得分:0)
无法解决此错误。从不同域加载到画布中的图像将引发此错误,因为当前由每个浏览器实现。在您的情况下,图像应存储在同一个域中,您不会得到例外。