2016-09-25 109 views
-1

这是barfly, 我有一个canvaced-images的问题。 (securityError) 我构建了一个设计访问卡的工具。在这里,我使用几个画布作为文本,一个作为徽标。没有插入图片的标志,一切工作正常。但是当我插入图像时,我得到了securityError。 (一开始它也起作用,我简直无法弄清楚,哪些变化导致这个问题)。现在我试图制作一个html2canvas,然后通过ajax将它们发送到一个php文件。但仍然是同样的问题。它在没有标识的情况下工作,并在插入徽标时引发securityError。这使我最困惑。 我在我的服务器上设置了全部内容。该网址是:http://obs-design.de/visitenkarten/ 添加图片,dobleclick任何文本canvaces点击编辑器上的图像图标。 继续之后,html2canvas显示在原始应用程序下。 (这里仍然有图像)。上传的图像文件可以在以下位置调用:http://obs-design.de/visitenkarten/canvasimg/visitenkarte.png(仅限于没有图像)。 有没有人对我有暗示?提前致谢。画布图像(securityError)

+2

起初,你可以飞到[如何问](http://stackoverflow.com/help/how-to-ask)页面... – Teemu

+0

嗨@barfly,很高兴见到你! :) ...请包括安全错误声明。 –

+0

错误语句是:[link] SecurityError:操作不安全。 错误来源行: \t var canvasData = canvas.toDataURL(“image/png”);但在Kaiido的帮助下,我能够解决这个问题,现在一切正常。无论如何非常感谢您的关注。 barfly – barfly

回答

0

这是因为您正在呼叫您的身体元素html2canvas()

您的文档确实包含对https://code.jquery.com/ui/1.12.0/themes/base/images/ui-icons_444444_256x240.png的引用,该引用未加载正确的CORS标头。

简单的修复方法是在您的#innerbox元素上调用html2canvas。 在文档的这一部分,没有任何东西会污染你的画布,你可以根据需要调用任何导出方法。

另请注意,canvas元素没有crossOrigin属性,绘制到其上下文的媒体资源必须已通过正确的跨源请求提供,但您无法在canvas级别执行此操作。

+0

非常感谢您的帮助。现在一切正常。 – barfly

+0

嗨Kaido - 首先我一切都很好,但事实并非如此。像以前一样,它有时会奏效,而不是再次失败。我无法理解画布(由html2canvas制作)与没有图像之间的区别这两个画布之间的区别在哪里。我在头文件中包含了crossOrigin,如下所示:。这是正确的沙发?在哪里以及如何包含CORS头?在此先感谢您的帮助。 – barfly

+0

Cors标头由托管要在画布上绘制的媒体的服务器发送。如果服务器未配置为接受crossOrigin请求,那么您运气不好。您必须在设置其src之前在img标签上设置crossIrigin属性,以便服务器知道您要遵守cors。 – Kaiido