一个具有高级API和特性的跨iframe通信库.
使用完整的链接 二. 支助 关键特性 二. 支助 如何使用 二. 支助 建筑 二. 支助 相关项目 二. 支助 捐款 二. 支助 许可证发放 二. 支助 更改日志 二. 支助 未来发展 二. 支助 探索的想法
有用链接
关键特性
- 交叉浏览器兼容性( IE 支持请参见 1. X 版本)
- 依赖和轻量级数量较少(~ 10克b minized & gziped)
- 可扩展和模块化(可添加模块和序列器)
- 手握连接、断开和重接事件
- 帮你把大部分安全检查都从盒子里拿出来
- 多个高级功能 API :
- 方便跨域函数调用查询模块
- 共享状态变化的事件模块
- 存储模块, 以可观察到的支持共享状态
- 为您提供基础插件系统的插件模块
- 允许对儿童内容进行基本操作的内容模块
- 非 JavaScript 原始数据类型的序列器系统, 如 :
- 映射/ 设定对象
- 错误对象
- 日期对象
- 键盘事件
- 鼠标事件
- Domrect (带有坐标自动翻译)
- 矩阵缓冲
怎样使用它
在您主域( 资产域) :
<script src="polyfill.js" type="text/javascript" charset="utf-8"></script>
<script src="coriolis.js" type="text/javascript" charset="utf-8"></script>
<div id="coriolisContainer"></div>
<script type="text/javascript">
var coriolis = Coriolis.createIframe(
document.querySelector('#coriolisContainer'),
'https://your-ugc-hostname.example.com',
'<html><head></head><body>Initial Coriolis Content</div></body></html>'
);
coriolis.query.call('addition', 12, 30).then(function(result) {
console.log(result);
});
</script>
在您的用户生成的内容域 :
<script src="polyfill.js" type="text/javascript" charset="utf-8"></script>
<script src="coriolis.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
var coriolis = new Coriolis(
window.parent,
'https://your-asset-hostname.example.com',
);
coriolis.query.register('addition', function(a, b) {
return Promise.resolve(a + b);
})
</script>
这将加载 Coriolis 在两个域, 做一个握手, 覆盖 Iframe的内容与 Initial Coriolis Content 最后打印结果 addition 在主域中(在iframe中进行计算).
以Coriolis为例,你可以启动该项目(npm start)和/或检查演示文件夹。 您也可以查看生成的文档( 以 npm run doc && open reporting/doc/index.html) (中文(简体) ).
建筑
由多个组件组成的Coriolis可以配置模块和序列器. 以下是一个高层次的类图来解释类是如何相互作用的.
数据序列器和模块Loader是抽象的,如果您有其他的功能需要(例如webSocket),则可以在Postmessage上下文之外使用,并且负责Coriolis的扩展.
警卫
即使 Coriolis 独自无法保护您的资产(以您需要保护的重要内容取代资产, 如 IMS 令牌), 当您处理您无法逃脱的客户数据时, 也会有所帮助( Customer JS 代码, 客户插件, Non-Adobe 集成, RichText Editors...). 它通过三个主要想法加强安全:
- 易用防止开发者绕过安全
- 使用特定协议拒绝非预期数据
- 默认相关的安全设置配置( sadbox 属性)
你负责的另一部分是确保你的资产得到充分保护:
- 在服务器上正确配置您的交叉来源资源共享和内容安全政策
- 使用两个不同的域名, 一个是您与资产的主要域名, 一个是用户生成的内容( UCC)
- 对使用或扩展Coriolis的代码进行安全代码审查 主要领域
- 不通过 Coriolis 共享您的资产
如果使用 Coriolis 并应用所有这些建议, 您应该按照该 威胁模型图 中描述的保证 :
相关项目
笔
允许执行查询功能的开源项目. 它在Adobe内部由Adobe Launch公司使用 反应堆桥。它只支持原始的javascript信息传输。 它不默认预设任何安全参数.
邮政
一个受欢迎的开源项目. 它有一个握手支持。 它只支持原始的JavaScript信息传输. 其设计只是为了有父母进行孩子交换,而并非为副方向交流所设计.
捐款
欢迎捐款! 读取 贡献指南 更多信息.
许可证发放
这个项目根据Apache V2许可证获得许可. 见 自由主义 更多信息.
更改日志
第2.1.2号版本
- 在 npmjs 软件包中修复缺失的 Readme
第2.1.1号版本
- 允许以“ *” 作为输入 URL 绕过来源验证 .
2.1.0版 (中文(简体) )
- 修正映射和设定序列器
- 允许推迟 PostMessage 的目标( 在 iframe 之前创建 coriolis 对象)
- 修正内容模块, 即使没有使用, 也会改写内容
- 允许内容Module 和 StoreModule 处理重接与否
- 在冲突中使 StoreModule 同步与合并Callback 连接的商店,或者在没有定义合并Callback 时使用父值.
- 如果连接丢失, 发送断开事件( 卸载事件)
- 改进打字定义
- 更新连接系统以提醒版本不匹配
- 在存储和事件模块中添加频道收听器支持和全局收听器支持
2.0.0版 (中文(简体) )
- 放弃对 Internet 浏览器的支持
- 添加类型脚本
- 减少使用量检查( 由 TypeScript 检查)
未来发展
以下是未来版本Coriolis的一些想法/改进列表. 欢迎任何捐助,如果对某一项目有兴趣,请与我们联系,但无捐助能力的活动.
- 添加安全配置
- 当两个框架在同一域上时添加警告
- 允许为父/ 子设置多个白名单主机
- 允许沙盒属性的个性化
- 将一些依赖性移入对等依赖性( 允许主工程使用它们拥有多填充)
- 允许配置来自 Coriolis 构建器的 DomRectSerializaer 的目标参数
探索的想法
- 为存储添加严格模式( 在使用前需要声明存储对象)
- 添加一个工具, 用于帮助调试存储、 事件历史和查询
- 为多帧转发器制作后信件装饰器