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

PS:我知道URI策略,但似乎它只控制所有东西,这些东西出自同一原始域名,即使库通过uriPolicy传递,它也仍由Caja进行检查。

最佳答案

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

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

07-25 20:42