代码之家  ›  专栏  ›  技术社区  ›  anton.mo

chrome打包应用程序中的JSON模式验证

  •  3
  • anton.mo  · 技术社区  · 10 年前

    我正在使用字符串 AJV 我的chrome应用程序中的JSON模式验证器。 但我犯了错误

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

    它发生在执行

    var validate = ajv.compile(schema);
    

    据我所知,AJV使用动态代码生成和eval()来验证JSON 这是被禁止的 CSP .

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

    或者还有其他JSON模式验证器可以用于chrome应用程序吗?

    2 回复  |  直到 9 年前
        1
  •  3
  •   esp John Woo    9 年前

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

    尽管有 limitations 与Ajv本身所能做的相比,大多数用例都被覆盖了。

        2
  •  1
  •   Xan    10 年前

    如果您想要使用的某个库与Chrome CSP不兼容,那么您可以 use it inside a sandbox .

    这是 well documented ,并且具有 concrete example 还有一篇专门的文章 "Using eval in Chrome Extensions. Safely."

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