Chrome 扩展程序中的沙盒页面通过 iframe 传递消息时抛出错误

马修·路德维希

尝试使用我的弹出页面作为 Chrome 扩展的弹出页面作为后台页面和弹出窗口 iframe 中显示的页面之间的通信管道时,出现以下错误。我需要一个沙盒环境来运行 Vue.js,但需要能够从chrome.storage其他此类对象获取数据并与其他此类对象一起使用,以便我接收数据包并在必要时向后台页面发送命令。

未捕获的安全错误:沙盒访问冲突:阻止了“chrome-extension://kncjlbkddbibekfmmljfpibdgjfdegeb”处的一个框架访问“chrome-extension://kncjlbkddbibekfmmljfpibdgjfdegeb”处的一个框架。请求访问的框架是沙盒化的,缺少“允许同源”标志。

这是管道弹出页面的代码:

//please look at it as if block comments aren't commented out
//this is needed  due to SO not having chrome.* available.
//although line comments are real comments.

let displayFrame = document.getElementById('displayFrame');
let displayPort = displayFrame.contentWindow;
/*
let backgroundPort = chrome.extension.connect({
  name : "Extension Connection"
});
*/

// Forwarding from background to index.
/*
backgroundPort.onMessage.addListener((msg) => {
  displayPort.postMessage(msg, "*");
});
*/

// Forwarding from index to background.
window.addEventListener("message", function(msg) {
  /*
    backgroundPort.postMessage({
      data : msg.data
    });
  */
});
<!doctype html>
<html lang='en'>

<head>
  <meta charset='UTF-8' />
  <script src="../scripts/popup.js" defer>
  </script>

  <style>
    * {
      box-sizing: border-box;
      opacity: 1.0;
      margin: 0px;
      padding: 0px;
      resize: none;
    }
  </style>
</head>

<body style="width : 300px; height: 500px;">
  <iframe id="displayFrame" sandbox="allow-same-origin allow-scripts" src="./index.html" style="width: 300px; height: 500px" frameborder="0"> </iframe>
</body>

</html>

的内容background.js,并index.html/js没有在我看来重要的是,他们都正确地传递消息到上面的代码的各自一方,我已经证实了这一消息传递在控制台中工作。index.js对 Vue.js 变量进行任何更改时,就会出现问题我已经尝试从实际的 Vue 对象(vm在文档中)和从内部(将消息侦听器附加到安装挂钩处的窗口)。我相信每个允许 Vue 监视状态变化的变量的包装 setter 是导致问题的原因,我很好奇是否有人知道如何摆脱错误。

我对扩展没有任何问题;消息传递甚至 Vue 变量设置/函数调用都可以完美运行。只是每次打开弹出页面,后台页面控制台都会出现错误。这是我应该担心的事情吗,可以解决吗?

马修·路德维希

所以这个问题已经解决了。该错误仅在将 vue 变量的值设置为event.sourceindex.js end 时发生window.addEventListener("message", (event) => { ... })我猜想 Vue 如何跟踪变量与作为发件人的窗口对象的变量不相符。但是我意识到发件人一直是 iframe 的父级,所以我通过以下方式解决了我的问题:

  • 不发送保存event.sourcefor命令发送的介绍包
  • 而是通过window.parent.postMessage我使用之前的位置发送命令this.vueVariable.postMessage

我希望这可以帮助将来遇到此类问题的任何人,解决方案一直在我的眼皮底下。扩展中不再有任何错误,通信也可以通过设置工作进行双向工作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

通过Chrome扩展程序绕过iFrame检测

来自分类Dev

从已加载的iframe将消息发送回Chrome扩展程序

来自分类Dev

从已加载的iframe将消息发送回Chrome扩展程序

来自分类Dev

Chrome扩展程序注入iframe

来自分类Dev

Chrome扩展程序弄乱了iframe

来自分类Dev

Chrome扩展程序:在用户点击iframe时设置操作

来自分类Dev

Chrome扩展程序将消息从iFrame发送到事件页面,然后再发送到内容脚本

来自分类Dev

Firefox/Chrome Web 扩展 - 尝试通过内容脚本注入 IFrame 时出现安全错误

来自分类Dev

无法通过Chrome扩展程序与iFrame进行交互

来自分类Dev

chrome 扩展,将数据传递给 iframe

来自分类Dev

Chrome扩展程序-将iframe中的内容叠加到基础页面上

来自分类Dev

Chrome扩展程序将jQuery注入iframe

来自分类Dev

Chrome扩展程序-iFrame自动高度

来自分类Dev

如何从 chrome 扩展访问 iframe?

来自分类Dev

如何修复iframe页面重新加载时的Chrome闪烁

来自分类Dev

在iFrame中设置元素值-Chrome扩展程序

来自分类Dev

无法更改Chrome扩展程序生成的iframe中的元素

来自分类Dev

从Chrome扩展程序访问iframe中的DOM元素

来自分类Dev

Chrome扩展程序中的消息传递示例

来自分类Dev

防止Chrome中的iframe缓存

来自分类Dev

防止Chrome中的iframe缓存

来自分类Dev

下载文件时在Chrome中检测iframe的加载

来自分类Dev

Chrome扩展程序消息传递

来自分类Dev

在IFRAME沙盒模式下的Google App脚本中获取错误的网址

来自分类Dev

chrome扩展程序:扩展程序可以与外部iframe通信吗?

来自分类Dev

Chrome扩展程序中内容脚本和背景页面之间消息传递的安全性

来自分类Dev

Chrome扩展程序中内容脚本和背景页面之间消息传递的安全性

来自分类Dev

当我在Google Chrome扩展程序中的内容脚本的帮助下将鼠标悬停在页面的每个iframe上时,该如何向其添加按钮?

来自分类Dev

在Chrome扩展程序中,如何将跨域消息从父内容脚本发送到特定子iframe中的内容脚本

Related 相关文章

  1. 1

    通过Chrome扩展程序绕过iFrame检测

  2. 2

    从已加载的iframe将消息发送回Chrome扩展程序

  3. 3

    从已加载的iframe将消息发送回Chrome扩展程序

  4. 4

    Chrome扩展程序注入iframe

  5. 5

    Chrome扩展程序弄乱了iframe

  6. 6

    Chrome扩展程序:在用户点击iframe时设置操作

  7. 7

    Chrome扩展程序将消息从iFrame发送到事件页面,然后再发送到内容脚本

  8. 8

    Firefox/Chrome Web 扩展 - 尝试通过内容脚本注入 IFrame 时出现安全错误

  9. 9

    无法通过Chrome扩展程序与iFrame进行交互

  10. 10

    chrome 扩展,将数据传递给 iframe

  11. 11

    Chrome扩展程序-将iframe中的内容叠加到基础页面上

  12. 12

    Chrome扩展程序将jQuery注入iframe

  13. 13

    Chrome扩展程序-iFrame自动高度

  14. 14

    如何从 chrome 扩展访问 iframe?

  15. 15

    如何修复iframe页面重新加载时的Chrome闪烁

  16. 16

    在iFrame中设置元素值-Chrome扩展程序

  17. 17

    无法更改Chrome扩展程序生成的iframe中的元素

  18. 18

    从Chrome扩展程序访问iframe中的DOM元素

  19. 19

    Chrome扩展程序中的消息传递示例

  20. 20

    防止Chrome中的iframe缓存

  21. 21

    防止Chrome中的iframe缓存

  22. 22

    下载文件时在Chrome中检测iframe的加载

  23. 23

    Chrome扩展程序消息传递

  24. 24

    在IFRAME沙盒模式下的Google App脚本中获取错误的网址

  25. 25

    chrome扩展程序:扩展程序可以与外部iframe通信吗?

  26. 26

    Chrome扩展程序中内容脚本和背景页面之间消息传递的安全性

  27. 27

    Chrome扩展程序中内容脚本和背景页面之间消息传递的安全性

  28. 28

    当我在Google Chrome扩展程序中的内容脚本的帮助下将鼠标悬停在页面的每个iframe上时,该如何向其添加按钮?

  29. 29

    在Chrome扩展程序中,如何将跨域消息从父内容脚本发送到特定子iframe中的内容脚本

热门标签

归档