如何通过Google CAJA传递库?

时间:2016-09-08 07:59:15

标签: javascript node.js d3.js google-caja

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

PS我知道URI策略,但它似乎只是控制所有东西,这些东西都来自相同的原始域名,只要eeven如果库通过uriPolicy传递,它仍然由Caja检查。

1 个答案:

答案 0 :(得分:1)

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

var uriPolicy = {
    mitigate: function(uri) {
        if(/jquery\.js/.test(uri))
            return urlToMyJquery.js;
        else
            return null;
    }
}