Ancestor navigation conformance probe
Every navigation vector a child frame can reach for, fired at an ancestor browsing context, across child origin source crossed with sandbox tokens crossed with ancestor targeted. Outcomes come from two independent sources: what the client can see happening to the victim frame, and what the server saw in the request headers. The second one is what makes sandboxed results legible, because a spawned tab with an opaque origin and no opener can still be seen making an HTTP request.
| Vector |
|---|
The allowed-to-navigate algorithm has no same-origin condition for ancestors. A child may navigate an
ancestor regardless of origin, gated only by the initiator's own sandboxing flags: the sandboxed
navigation flag blocks navigating a non-top ancestor, and the top-level variants gate the top. Chromium
and WebKit add an unstandardised intervention requiring user activation before a frame that is
cross-origin with the top may navigate it. That intervention is top-specific, so the
parent and top columns can legitimately disagree.
Sec-Fetch-Dest distinguishes a top-level navigation from a frame navigation, which is
SPAWNED versus NAVIGATED without needing script in the target.
Sec-Fetch-User is sent only when the browser considered the navigation user activated,
which is the browser's own determination rather than the child's guess.
Origin arrives on POST navigations and reads null for an opaque initiator,
which settles whether a given profile really is opaque instead of leaving it to inference.
Note that Safari does not send Sec-Fetch-User, so treat its absence there as unknown
rather than as no activation.
Two subdomains of one registrable domain are cross-origin but same-site. Behaviours keyed on site
rather than origin, including storage partitioning and Sec-Fetch-Site, will not separate
under a subdomain-only setup. Add a child origin on a different registrable domain to get a genuine
cross-site column; the source list below labels each origin with its relationship to this page.
The child and beacon header fields take raw query fragments. Recognised keys are
csp, coop, coep, corp, xfo,
referrer-policy and permissions-policy. The interesting one is
csp=sandbox allow-scripts, which applies sandbox flags through the header path rather than
the attribute path, and which a document can apply to itself.