CSP使用page-mod的contentScript阻止“eval”

时间:2014-01-08 11:36:17

标签: firefox-addon eval firefox-addon-sdk content-security-policy

我试图创建一个与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"
});

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

1 个答案:

答案 0 :(得分:1)

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

通常99%的时间,eval的使用可以用其他东西替换。如果你给出了上下文(为什么你需要eval),我们可以尝试建议一个替代方案。 这是简单的方法。

困难的方法是截取github的响应,使用the observer notification "http-on-examine-response"删除该标题,这里有一个full example,但你可能有一个简化版本。

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