JSON chrome 打包应用中的架构验证
JSON schema validation in chrome packaged app
我想在我的 chrome 应用程序中使用 AJV JSON 模式验证器。
但是我得到了错误
EvalError: Refused to evaluate a string as JavaScript because 'unsafe-eval' is not an 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?
或者是否有其他 JSON 模式验证器可用于 chrome 应用程序?
如果您要使用的某些库与 Chrome CSP 不兼容,那么您可以 use it inside a sandbox.
这是well documented, and has a concrete example and a whole dedicated article "Using eval in Chrome Extensions. Safely."
缺点是您不能编写同时使用 Chrome API 和库的代码。您需要将其分开并在两个脚本之间进行通信。
我最近实现了使用 ajv-cli 将模式预编译为独立模块的选项。这样你就可以完全避免使用代码生成和函数构造函数,所以你将简单地遵守你的 CSP。
尽管与 Ajv 本身可以完成的工作相比 limitations,但涵盖了大多数用例。
我想在我的 chrome 应用程序中使用 AJV JSON 模式验证器。 但是我得到了错误
EvalError: Refused to evaluate a string as JavaScript because 'unsafe-eval' is not an 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?
或者是否有其他 JSON 模式验证器可用于 chrome 应用程序?
如果您要使用的某些库与 Chrome CSP 不兼容,那么您可以 use it inside a sandbox.
这是well documented, and has a concrete example and a whole dedicated article "Using eval in Chrome Extensions. Safely."
缺点是您不能编写同时使用 Chrome API 和库的代码。您需要将其分开并在两个脚本之间进行通信。
我最近实现了使用 ajv-cli 将模式预编译为独立模块的选项。这样你就可以完全避免使用代码生成和函数构造函数,所以你将简单地遵守你的 CSP。
尽管与 Ajv 本身可以完成的工作相比 limitations,但涵盖了大多数用例。