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 contextResolve contextPre-v137v137+
https://a.example tophttps://a.example tophithit
https://a.example tophttps://a.example iframe in https://a.examplehithit
https://a.example tophttps://a.example iframe in https://b.examplehitmiss
https://a.example tophttps://b.example tophitmiss
https://a.example topnavigation to URL from https://b.examplehitmiss

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);

see also