在Chrome中运行时修改对象数据而不使用SOP

时间:2015-11-06 16:57:58

标签: javascript google-chrome svg same-origin-policy

我想将SVG加载到对象标记中并访问它的元素。由于Same-Origin-Policy,Chrome不允许这样做,即使我在网络服务器上运行它。

我能想到的唯一解决方法是将图像数据上传到服务器,将其保存为图像,然后将网址返回到此图像。

在Chrome中运行此代码段,控制台将在其下方显示错误。

<!DOCTYPE html>
<html>
<head>
  <script>
  window.onload = function() {
    var obj = document.querySelector('#obj');
    obj.data = 'data:image\/svg+xml;base64,a==';
    obj.onload = function() {
        doc = obj.contentDocument;
    }
  }
  </script>
</head>
<body>
    <object id="obj" type="image/svg+xml"></object>
</body>
</html>
  

Uncaught SecurityError:无法阅读&#39; contentDocument&#39;属性   来自&#39; HTMLObjectElement&#39;:使用原点阻止了一个框架   &#34; http://localhost&#34;从访问带有原点&#34; null&#34;的框架。该   请求访问的帧具有&#34; http&#34;的协议,帧是   access具有&#34; data&#34;的协议。协议必须匹配。

0 个答案:

没有答案