@adobe/coriolis

中文文档
2.1.2发布于 2025/05/16Apache-2.0TypeScriptESM + CJS零依赖近 30 天下载 2273

一个具有高级API和特性的跨iframe通信库.

中文使用文档
文档目录18 节
  1. 一个具有高级API和特性的跨iframe通信库.
  2. 有用链接
  3. 关键特性
  4. 怎样使用它
  5. 建筑
  6. 警卫
  7. 相关项目
  8. 笔
  9. 邮政
  10. 捐款
  11. 许可证发放
  12. 更改日志
  13. 第2.1.2号版本
  14. 第2.1.1号版本
  15. 2.1.0版 (中文(简体) )
  16. 2.0.0版 (中文(简体) )
  17. 未来发展
  18. 探索的想法

Coriolis

一个具有高级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 的目标参数

探索的想法

  • 为存储添加严格模式( 在使用前需要声明存储对象)
  • 添加一个工具, 用于帮助调试存储、 事件历史和查询
  • 为多帧转发器制作后信件装饰器

版本与发布记录

@adobe/coriolis 共发布 14 个版本,首次发布于 2022/01/28;过去 12 个月发布了 0 个版本。

版本发布日期距今
2.1.2latest2025/05/161.5 年前
2.1.12025/05/161.5 年前
2.1.1-beta.02024/12/121.9 年前
2.1.02024/11/142 年前
2.1.0-beta.62024/06/272 年前
2.1.0-beta.52024/05/302 年前

关于 @adobe/coriolis 的常见问题

@adobe/coriolis 是什么?

一个具有高级API和特性的跨iframe通信库.

如何安装 @adobe/coriolis?

在项目目录运行 npm install @adobe/coriolis,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:eventemitter3(^5.0.0)、babel-polyfill(^6.26.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@adobe/coriolis 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@adobe/coriolis 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@adobe/coriolis 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=18.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@adobe/coriolis 可以商用吗?

@adobe/coriolis 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@adobe/coriolis 的下载量有多少?

根据 npm 官方下载统计,@adobe/coriolis 在 2026/10/05 – 2026/11/03 这 30 天内被下载 2,273 次,日均约 76 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@adobe/coriolis 还在维护吗?

最新版本 2.1.2 发布于 2025/05/16(1.5 年前);至今共发布 14 个版本,其中过去 12 个月发布了 0 个;首次发布于 2022/01/28。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。