demo · v132
The top-level nav carve-out
Subresource fetch and iframe-src key the blob by the full storage key triplet. Top-level navigation keys it by frame origin only. The spec deliberately keeps download links portable. Walk through what survives.
cross-site link target
resolved by storage key
fetch(blob)subresource — full key—
img.src = blobsubresource — full key—
iframe.src = blobsubframe nav — full key—
XHR(blob)subresource — full key—
resolved by origin only
<a href=blob>top-level nav — origin only—
location = blobtop-level nav — origin only—
window.open(blob)opens new top — origin only—
choose a scenario above to walk it through
relevant spec excerpt
// from html spec: navigate-to-a-fragment / fetch step
// subresource: BlobURLStoreImpl::ResolveAsURLLoaderFactory
// key = StorageKey(top_level_site, frame_origin, has_cross_site_ancestor)
// blob_store.lookup(blob_url, key) // strict
// top-level nav: BlobURLStoreImpl::ResolveForNavigation
// key = origin(blob_url) // permissive: same as v131 behaviour
// blob_store.lookup(blob_url, key.origin_only_partition())