【问题标题】:content privacy policy refuses appending script to DOM内容隐私政策拒绝将脚本附加到 DOM
【发布时间】:2014-10-04 13:15:50
【问题描述】:

我正在使用 Firefox SDK 插件将一些脚本附加到活动选项卡,

// main.js
tabs.activeTab.attach({
  contentScriptFile: [data.url("js/loader.js") ]
});

loader.js 根据其正在处理的网站的 URL 和标题创建一个新脚本,然后将新脚本文件(如 counter.js)附加到身体。执行加载器工作正常,但网站的内容隐私政策拒绝附加 counter.js 。这是错误:

Content Security Policy: The page's settings blocked the loading of a resource at http://example.com/counter.js ("default-src http://www.pinterest.com:80 https://*.pinterest.com:443 https://*.pinimg.com:443 http://*.pinterest.com:80 http://*.pinimg.com:80 http://*.google.com:80 http://connect.facebook.net:80 http://*.google-analytics.com:80 https://*.facebook.com:443 http://*.facebook.com:80 http://www.googleadservices.com:80 http://googleads.g.doubleclick.net:80 http://*.tiles.mapbox.com:80 http://*.4sqi.net:80 http://*.online-metrix.net:80 http://akwww.polyvorecdn.com:80 https://www.polyvore.com:443 'unsafe-inline' 'unsafe-eval'").

我以前为 Chrome 扩展程序做过这个,这是可能的。但问题是如何通过 Firefx SDK 插件附加脚本?
提前致谢。

【问题讨论】:

  • 也许 Firefox 和 Chrome 对页面策略的解释不同,Firefox 假设“不意味着不”。
  • @Pointy 也许吧,但我需要想办法!
  • 我们可以看看您是如何附加脚本的以及您尝试使用的 URL 吗?
  • @willlma 谢谢,我添加了更多信息

标签: javascript firefox-addon-sdk mozilla


【解决方案1】:

如果您只想将脚本附加到具有特定 URL 的页面,最好使用 PageMod,而不是附加到选项卡。查看您的大部分代码并稍微了解您打算如何为您提供最佳答案会很有用,但如果 PageMod 不是您想要的,这里有一些不同的场景。

有两种方法可以解决这个问题。我要做的就是立即附加两个脚本,如下所示:

ma​​in.js

tabs.activeTab.attach({
  contentScriptFile: [data.url("js/loader.js"), data.url("js/counter.js") ]
});

counter.js

var i = 0;
function count() {
  i++;
}

loader.js

if (titleIsValid() && urlIsValid()) {
  count();
}

因为您所有的文件都存储在本地,所以我不会太担心将大量的 JS 文件附加到很多页面上。你只需要构造你的 count.js 以便它不会自动执行代码。


如果你真的想只在满足这些条件的情况下附加 JS 文件,你可以这样做:

ma​​in.js

var worker = tabs.activeTab.attach({
  contentScriptFile: data.url("js/loader.js")
});

worker.port.on('attachCounter', function() {
  worker.tab.attach({
    contentScriptFile: (data.url("js/counter.js")
  });
});

loader.js

if (titleIsValid() && urlIsValid()) {
  self.port.emit('attachCounter');
}

阅读更多关于communicating between content scripts and main scripts from tab/attach


如果您将脚本附加到页面的原因是与页面上已经存在的页面脚本进行交互(以及 Firefox 告诉您它不安全的确切原因),请阅读interacting with page scripts

【讨论】:

  • 谢谢亲爱的@willlma,这些方法我都试过了。但是因为我已经编写了加载程序和计数器脚本来作为书签工作,而且我不知道这个策略,所以我不能使用它们。我想我没有对这些脚本进行更改。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-04
  • 1970-01-01
  • 2021-10-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多