3

我想在我的 chrome 应用程序中使用 AJV JSON 模式验证器但我得到了错误

EvalError:拒绝将字符串评估为 JavaScript,因为 'unsafe-eval' 不是以下内容安全策略指令中允许的脚本源:“default-src 'self' blob: filesystem: chrome-extension-resource:”。

它发生在执行期间

var validate = ajv.compile(schema);

据我了解,AJV 使用动态代码生成和 eval() 来验证CSP禁止的 JSON 。

有没有办法在 chrome 应用程序中使用 AJV?

或者是否有其他一些可以在 chrome 应用程序中使用的 JSON 模式验证器?

4

2 回答 2

3

我最近实现了使用ajv-cli将模式预编译为独立模块的选项。通过这种方式,您可以完全避免使用代码生成和 Function 构造函数,因此您只需遵守您的 CSP。

尽管与 Ajv 本身可以做的事情相比存在一些限制,但大多数用例都被涵盖了。

于 2016-10-20T21:10:15.187 回答
1

如果您要使用的某些库与 Chrome CSP 不兼容,那么您可以在 sandbox 中使用它

这是有据可查的,并且有一个具体的例子和一整篇专门的文章“在 Chrome 扩展中使用 eval。安全。”

缺点是你不能编写同时使用 Chrome API 和库的代码。您需要将其分开并在两个脚本之间进行通信。

于 2016-01-14T14:56:41.327 回答