2

我试图创建一个将与 github 交互的扩展。我需要在我的代码中使用“eval”,但我一直被页面 CSP 阻止。这是我的代码的简化版本:

const pageMod = require("sdk/page-mod").PageMod;

var contentScript = 'try {eval("console.log(\'hello from eval\')");} catch (e) {console.log("page mode " + e.message);}';

pageMod({
    include: "*",
    contentScript: contentScript ,
    contentScriptWhen: "start"
});

有人可以帮我解决问题吗?

4

1 回答 1

1

这是因为内容安全策略:https ://developer.mozilla.org/en-US/docs/Security/CSP/CSP_policy_directives

通常 99% 的情况下,eval可以用其他东西代替的用法。如果您提供上下文(为什么需要评估),我们可以尝试提出替代方案。这是最简单的方法。

困难的方法是拦截来自 github 的响应,以删除该标头,使用观察者通知 "http-on-examine-response",这里有一个完整的示例,但您可能有它的简化版本。

就个人而言,我会尽量避免使用 eval,它通常更容易。

于 2014-01-15T09:24:10.243 回答