在Chrome安全问题上画布toDataURL() - c#

我在Chrome上遇到Canvas问题。我知道提到了很多,但是我找不到适合我的解决方案。

基本上,我正在设计一个执行以下步骤的网站:
-从托管服务器将SVG图像模板加载到对象中。
-处理SVG(着色,隐藏和显示图层等)
-然后将操纵后的版本发送到服务器,以插入到pdf文档中并通过电子邮件发送。

我的问题是最后一步。我使用的方法涉及:
-提取SVG的内容文档并序列化其XML。

 var s = new XMLSerializer();
 svg = document.getElementById('theSVG').contentDocument;
 var xmlTest = s.serializeToString(svg);

使用onLoad函数定义新图像并将src应用于它:

DrawnImage.src ='data:image / svg + xml'+ escape(xmlTest);
创建画布元素并将该图像绘制到其中:

var canvas = document.createElement('canvas');
var cont = canvas.getContext('2d');
cont.drawImage(drawnImage,0,0,canvas.width,canvas.height);
最后一步是从canvas元素中提取dataURI,如下所示:

  var ImageDataURl = canvas.toDataURL();

之后,数据(base64)被发送到服务器,转换为位图,并作为jpeg图像保存在服务器磁盘上,然后作为大pdf文档的一部分插入。

一切都进行得很好,直到我在chrome上对其进行了测试,并且遇到了以下安全错误:

  未捕获的SecurityError:试图突破
  用户代理的安全策略

当我读到这个错误时,我知道这是跨域图像和非此类的Chrome安全问题。我想知道的是以下内容:
-是否将创建新的画布并将图像在用户浏览器中加载到其他浏览器中作为文件处理?
-即使在服务器端(我在使用C#),我也不介意这样做吗?我尝试上传SVG XML,并尝试将其转换为base64字符串,但是没有运气。

任何帮助,将不胜感激。

参考方案

在Chrome上,将SVG图片加载到画布中会污染画布,这意味着尽管仍可以对其进行写入,但您无法从其中读取任何数据。如果您避免使用某些之类的SVG元素,它似乎是fixed recently in Chrome,因此也许很快就会出现在Chrome发行版中。

同时,也许您可​​以使用不会弄脏画布的Firefox代替。

javascript popupwindow之后的行如何工作? - javascript

好的,我有一个来自后面代码的方法,可以创建一个popupwindow。然后有一行代码要在那之后执行,我想知道那行代码何时执行,是在使用popupwindow之后执行还是在创建popupwindow之后执行?例如:void exPopupWindowMethod() { string scr = "window.open('exampleP…

Python Jinja2从后端分配javascript var - javascript

我正在for循环中,我需要将python值分配给javascript变量,但我实际上无法使其工作:({% for row in temp %} var year = {{ row[0]|safe }} {% endfor %} 我已经尝试了很多方法,但它总是会给我Uncaught SyntaxError: Unexpected token var 正确的语法…

Javascript-Urls的奇怪字符串比较行为 - javascript

最近,在编写我无法理解的javascript时遇到了字符串比较的问题。我从完全相同的网址创建了两个字符串,当我比较它们时返回false,但是在重新分配相同的字符串后,比较返回true。这是我的示例:var str1 = "http://google.com/"; var str2 = "http://google.com‏/&#…

Javascript-从当前网址中删除查询字符串 - javascript

单击提交按钮后,我需要从网址中删除查询字符串值。我可以用jQuery做到这一点吗?当前网址:siteUrl/page.php?key=value 页面提交后:siteUrl/page.php 实际上,我已经从另一个带有查询字符串的页面着陆到当前页面。我需要在页面首次加载时查询字符串值以预填充一些详细信息。但是,一旦我提交了表格,我就需要删除查询字符串值。我已…

Javascript IF语句 - javascript

                        嗨,我有这段代码可以正常工作,并将两个日历显示为一个日历。我还有一个php变量$login_session,其中包含登录电子邮件地址的用户。关于如何显示[email protected]日历的任何想法(伪代码)IF $login_session == "[email protected]&#…