demo · v137
Partition inspector
Mint blob: URLs in this page and try to fetch them from a same-site, a same-origin, and a synthetic cross-site context. The right column fails in Chrome 137 — that is partitioning at work.
The browser key for a blob: URL is now (top-level site, frame origin). A URL minted on https://a.example still works from a same-site iframe but stops resolving when embedded on https://attacker.example.
computing partition key…
same origin (this page)
same site, different origin
cross-site (synthetic)
partition keying matrix
The cells below are the rules Chrome enforces in 137. Same site + same top frame = hit. Anything else = miss.
| Mint context | Resolve context | Pre-v137 | v137+ |
|---|---|---|---|
| https://a.example top | https://a.example top | hit | hit |
| https://a.example top | https://a.example iframe in https://a.example | hit | hit |
| https://a.example top | https://a.example iframe in https://b.example | hit | miss |
| https://a.example top | https://b.example top | hit | miss |
| https://a.example top | navigation to URL from https://b.example | hit | miss |
the code
// Mint
const url = URL.createObjectURL(new Blob(["hi"], { type: "text/plain" }));
// In v137: only a frame whose (top-site, origin) matches the minting
// context will resolve the URL. Everything else 404s.
fetch(url).then((r) => r.text()).then(console.log);