chrome 打包应用程序中的 JSON 模式验证
Posted
技术标签:
【中文标题】chrome 打包应用程序中的 JSON 模式验证【英文标题】:JSON schema validation in chrome packaged app 【发布时间】:2016-04-18 17:11:26 【问题描述】:我想在我的 chrome 应用程序中使用 AJV JSON 模式验证器。 但我得到了错误
EvalError: Refused to evaluate a string as javascript because 'unsafe-eval' is not a allowed source of script in the following Content Security Policy directive: "default-src 'self' blob: filesystem: chrome-extension-resource: ”。
它发生在执行过程中
var validate = ajv.compile(schema);
据我了解,AJV 使用动态代码生成和 eval() 来验证 JSON 这是CSP禁止的。
有没有办法在 chrome 应用中使用 AJV?
或者是否有其他一些可以在 chrome 应用中使用的 JSON 模式验证器?
【问题讨论】:
【参考方案1】:我最近使用ajv-cli 实现了将架构预编译为独立模块的选项。这样你就可以完全避免使用代码生成和 Function 构造函数,所以你只需遵守你的 CSP。
虽然有 limitations 与 Ajv 本身可以做的相比,但大多数用例都涵盖了。
【讨论】:
更新了 ajv 7+ 的限制:github.com/ajv-validator/ajv/blob/master/docs/…【参考方案2】:如果您要使用的某些库与 Chrome CSP 不兼容,那么您可以use it inside a sandbox。
这是well documented,有一个concrete example和一篇完整的专文"Using eval in Chrome Extensions. Safely."
缺点是您无法编写同时使用 Chrome API 和库的代码。您需要将其分开并在两个脚本之间进行通信。
【讨论】:
具体的例子对我帮助很大。谢谢。以上是关于chrome 打包应用程序中的 JSON 模式验证的主要内容,如果未能解决你的问题,请参考以下文章
json 如何使用Chrome Identity API为Chrome扩展程序设置用户身份验证
Packer 无法验证 jenkins 作业中的 hcl2 模板