2

有谁知道我是否可以配置 Google Caja,所以它可以让一些确切的库工作而不被清理?我有自己的 CAJA 服务器和基于 NodeJS 的应用程序。我正在向 Google CAJA 用户传递代码,该代码主要与图表和图形相关,但所有库函数(如 d3js、chart.js)都被 CAJA 阻止。所有库都通过 Caja 并无错误地连接到用户的文档,但如果用户请求库的任何功能(例如d3.select("body").append("svg")),那么它会显示错误,例如this * is not a function. 有谁知道任何方法?

PS 我知道 URI Policy,但它似乎只控制所有东西,即来自同源域名的东西,即使库通过 uriPolicy,它仍然由 Caja 检查。

4

1 回答 1

1

您可以从 uriPolicy.mitigate 函数将 url 返回到库的预缓解/预哄骗/受信任版本。您可以只检查库 url,如果它匹配,则返回预设的 URL,否则返回 null。例如:

var uriPolicy = {
    mitigate: function(uri) {
        if(/jquery\.js/.test(uri))
            return urlToMyJquery.js;
        else
            return null;
    }
}
于 2017-03-25T13:40:30.117 回答