javascript - 如何通过 Google CAJA 传递库?

标签 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 政策,但它似乎只控制所有东西,即来自同源域名的所有东西,无论何时,即使库通过 uriPolicy 传递,Caja 仍在检查它。

最佳答案

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

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

关于javascript - 如何通过 Google CAJA 传递库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39385560/

相关文章:

javascript - 如何使用 jquery 拆分和连接字符串以获得以下结果

javascript - 切换被点击的元素并隐藏所有其他元素

javascript - 更改日期调用一次功能

node.js - babel-cli 和@babel/cli 有什么区别?

javascript - 当解析器不是逗号时如何使用 d3 解析 csv 文件

javascript - 如果我在同一页面上使用两次 $.get() 函数,它会加载两次吗?

node.js - iisnode-IIS7.5 : 405 Method not allowed when performing PUT request

javascript - 如何使用 javaScript 从实时数据库、Firebase 函数中的所有 randomId 中获取特定键值

javascript - d3.json 不接受在 d3 甘特图中绘制的查询结果

javascript - 使用种子值在刷新之间保持 d3-cloud 一致?