Cross-Origin-Opener-Policy è un header di risposta. Dice se la pagina condivide il browsing context group. same-origin isola. Non è CORS. Il banner cookie non lo imposta.
Il banner cookie non scrive l’header Cross-Origin-Opener-Policy. COOP è un header di risposta con cui il server decide se un documento aperto con Window.open(), o con una navigazione, finisce nello stesso browsing context group o in uno nuovo. MDN: se il gruppo è nuovo, i riferimenti tra documento e opener si tagliano. Non è CORS. Non è il consenso al marketing.
In breve: header di risposta. Quattro direttive: unsafe-none (default), same-origin, same-origin-allow-popups, noopener-allow-popups. Per l’isolamento cross-origin servono COOP same-origin e COEP require-corp (o credentialless). Non è Access-Control-Allow-Origin. Verifica del 25 settembre 2026 su MDN (ultima modifica 12 luglio 2026).
Cosa trovi in questo articolo
Cosa è COOP (e cosa non è CORS)
MDN, sulla pagina dell’header Cross-Origin-Opener-Policy, parte da un fatto: senza una policy stretta, un altro sito può aprire la tua pagina con Window.open() e tenere un riferimento all’oggetto globale. Quella famiglia di attacchi si chiama XS-Leaks. Con COOP, il documento può finire in un altro browsing context group: niente window.opener utile, niente scambio di script tra i due. MDN: è un controllo più fine di rel=noopener, che vale sulle navigazioni in uscita, non su ciò che apri tu con Window.open().
Non è CORS. CORS decide chi può leggere una risposta. COOP decide se due documenti condividono il gruppo di contesto. Non è X-Frame-Options: quello decide se la pagina finisce in un iframe. Non è CSP. Non è il cookie SameSite. Il banner che chiede il marketing non isola il browsing context. Cinque mestieri, un popup.
Questo pezzo sta nel cluster Sicurezza, accanto a CORS e a X-Frame-Options. HSTS forza HTTPS. COOP forza i confini del gruppo. Due piani, due header.
Le quattro direttive
MDN, stessa pagina. Header di risposta. Quattro valori.
| Direttiva | Cosa fa, secondo MDN |
|---|---|
unsafe-none | default: il documento può condividere il gruppo con chiunque; è l’opt-out dall’isolamento |
same-origin | stesso gruppo solo con documenti same-origin che hanno la stessa direttiva; serve all’isolamento cross-origin |
same-origin-allow-popups | come same-origin, ma Window.open() può tenere nel gruppo un documento con unsafe-none (OAuth, pagamenti) |
noopener-allow-popups | isola anche i documenti same-origin: l’opener non esegue script nell’aperto, e viceversa |
Sintassi, una riga: Cross-Origin-Opener-Policy: same-origin.
MDN, tabelle di matching. In navigazione, stesso gruppo solo se le policy «matchano»: entrambe unsafe-none, oppure stessa direttiva e stessa origine. Con Window.open() le regole si valutano in ordine: prima noopener-allow-popups sull’aperto, poi il caso unsafe-none con opener same-origin-allow-popups o noopener-allow-popups, poi il matching. Non si indovina. Si legge la tabella MDN, o si verifica in Network.
Isolamento, COEP, non il banner
MDN: è un header di risposta. Si mette sulla risposta HTTP. Si verifica in Network, sulla risposta del documento, non sul lucchetto della home, non sul testo del banner.
Alcune API, scrive MDN, restano spente senza isolamento cross-origin: SharedArrayBuffer, timer non throttlati di Performance.now(). Per ottenerlo servono COOP same-origin e Cross-Origin-Embedder-Policy require-corp (o credentialless). In più, Permissions-Policy: cross-origin-isolated non deve bloccare la feature. Si controlla con window.crossOriginIsolated. COEP non è COOP. CORP, Cross-Origin-Resource-Policy, è un terzo header: dice se una risorsa può essere caricata da un’altra origine. Tre sigle, tre mestieri.
HSTS non isola il gruppo. Permissions-Policy spegne camera e geolocalizzazione, non l’opener. Referrer-Policy decide cosa finisce in Referer. nosniff ferma lo sniffing del MIME.
Errori da evitare
Lasciare il default
unsafe-nonesu una web app con dati di login e credere cherel=noopenerbasti anche suWindow.open().Mettere COOP
same-origine dimenticare COEP: MDN, senza entrambi non c’è isolamento cross-origin.Confondere COOP con CORS, CORP, COEP o X-Frame-Options: quattro header, quattro mestieri, più CORS.
Trattare il banner cookie come COOP: il consenso non scrive l’header.
Aprire OAuth o un checkout in popup con COOP
same-originstretto e stupirsi se l’opener perde il riferimento: MDN indicasame-origin-allow-popupsper quel caso.Verificare l’header sul testo della privacy policy invece che in Network.
In sintesi
Cross-Origin-Opener-Policy è un header di risposta. Il default è unsafe-none. Per isolare il browsing context si usa same-origin, con COEP accanto. Non è CORS. Non è il banner cookie. Si verifica in Network. MDN, 25 settembre 2026.