【问题标题】:Same origin policy issues when developing browser extension开发浏览器扩展时的同源策略问题
【发布时间】:2019-12-18 02:35:39
【问题描述】:

尝试开发一个简单的 Firefox 扩展。该扩展程序采用特定网站并将页面嵌入另一个网页的预定义位置。所以两个不同的领域,彼此完全不相关。我了解同源策略不适用于浏览器扩展,我查看了其他 stackoverflow 问题,例如 this onehere

我的问题是我在manifest.json 文件中添加了permissions 标签,如下所示:

"permissions": ["*://www.abcwebsite.com/*"]

abcwebsite.com 是我要嵌入的网站。我还将这两个网站添加到content_scripts 中的"matches" 标记中。

但是,我仍然无法访问嵌入式网站的 DOM 结构。

我可以很好地嵌入整个网站,但我试图只嵌入页面的特定部分。我不知道我哪里出错了,

【问题讨论】:

    标签: javascript firefox-addon same-origin-policy


    【解决方案1】:

    该扩展程序采用特定网站并将页面嵌入到 另一个网页中的预定义位置

    您没有跳过same-origin-policy,因为一个来源加载了另一个来源的内容。执行客户端代码的浏览器是否使用扩展应用相同的策略。一般概念是您不能在两个来源之间共享资源,除非共享的来源特别允许另一个来源。

    后台脚本,否则

    可以向他们拥有主机的任何主机发出 XHR 请求 权限。

    source

    所以如果可能的话,这个问题的解决方案是一个背景问题。

    【讨论】:

    • 这行让我有点困惑,这是否意味着我正在相应地设置权限,或者它本质上是否意味着我必须有权访问外星域?
    • 您只需要将两个站点都包含在匹配项中。此问题的权限没有其他问题。至少是本期的第一部分。
    • 解决方案可能会有所不同,具体取决于您到底想要什么。但一种可能的解决方案是,1 -> 使用 originA 中的内容脚本从 originA 获取您想要的内容,2 -> 将该数据发送到后台 3 -> 将数据从后台发送到 originB 中的内容脚本。
    • 这实际上是我试图去的确切路线,但我认为我仍然遇到相同的起源问题,因为背景 js 或 html 与 originB 不同
    猜你喜欢
    • 1970-01-01
    • 2012-08-04
    • 2011-06-06
    • 2013-05-18
    • 1970-01-01
    • 2011-05-04
    • 1970-01-01
    • 2020-05-21
    相关资源
    最近更新 更多