Origin-Agent-Cluster:可预测的 JavaScript 内存隔离
理解 Origin-Agent-Cluster 选择、同源与子域行为、部署一致性和验证回退。
BotBrowser Team
Origin-Agent-Cluster 请求按来源组织 JavaScript 执行。它不是独立操作系统进程、固定内存配额,也不能替代同源策略。BotBrowser 可以在声明的浏览器上下文中重复已授权检查,但不能强制浏览器布局或修改 HTTP 响应。
要点
Origin-Agent-Cluster: ?1请求按来源分组;?0在支持时请求旧行为。- 协议、主机和端口构成来源;子域仍是不同来源。
- 同时检查最终响应、
window.originAgentCluster、DevTools 和 WPT 风格夹具。 - 重定向、缓存、service worker、frame 和 worker 的策略必须一致。
- API 不存在或策略未被采用时使用应用回退。
目录
请求头作用
响应头请求文档和相关 worker 的 agent cluster 分组。window.originAgentCluster 是可观察结果。true 不代表独立进程;晚到的脚本也不能更改已经创建的分组。
来源与子域
https://app.example.test 与 https://cdn.example.test 是不同来源。对每个 frame 检查最终 URL、响应头和 boolean。消息仍需验证 event.origin 与数据结构。
夹具与矩阵
const observed = window.originAgentCluster;
const state = observed === true ? 'origin-keyed' : observed === false ? 'site-keyed' : 'unknown';
console.log({ state, origin: location.origin });
| 观察 | 解释 | 下一步 |
|---|---|---|
?1 与 true | 观察到按来源分组 | 保留声明的能力 |
无头且 false | 旧或按站点结果 | 使用回退 |
| 属性不存在 | API 不可用 | 标记不支持 |
| 头不一致 | 路由或 CDN 变体 | 发布前修复 |
BotBrowser 支持在授权 profile 中重复矩阵并比较可见回退,但不能改变请求头、第三方响应或保证进程数量。
结论
在最终响应设置策略,测试来源、子域、重定向、frame 和缓存,并保留回退。下一步是把 boolean、浏览器版本和资源契约一起记录。
常见问题
?1 会创建每来源一个进程吗?
不会。它请求分组,进程仍是实现细节。
子域是同源吗?
不是。主机变化就改变来源。
JavaScript 能启用请求头吗?
不能。创建文档的响应决定策略。
BotBrowser 做什么?
它重复授权测试,但不强制隔离或私有进程布局。
延伸阅读
Public sources
#Origin-Agent-Cluster#JavaScript#同源#站点隔离