Sec-Fetch-User è un header di richiesta. Il browser lo scrive solo se c’è un’attivazione dell’utente, valore sempre ?1. Non è CORS. Non è il banner cookie.
Il banner cookie non scrive l’header Sec-Fetch-User. È un header di richiesta: il browser lo mette da solo, con il prefisso Sec-, e solo se c’è un’attivazione dell’utente. Il valore, scrive MDN, è sempre ?1. Se la richiesta non parte da un click (o da un’altra user activation), l’header non c’è: non vale ?0. Non è CORS. Non è il consenso al marketing.
In breve: fetch metadata request header, solo verso URL potenzialmente fidati (HTTPS). Forbidden request header: il prefisso Sec- lo rende non impostabile dagli script. Valore unico ?1. Assente se non c’è user activation. Completa la famiglia con Dest, Mode e Site. Verifica del 2 ottobre 2026 su MDN (header, ultima modifica 28 settembre 2026). Disponibilità limitata: MDN non lo marca Baseline.
Cosa trovi in questo articolo
Cosa è Sec-Fetch-User (e cosa non è CORS)
MDN, sulla pagina dell’header Sec-Fetch-User, parte da un fatto: è inviato per le richieste iniziate da una user activation. Un server può usarlo per capire se una navigazione da un documento, un iframe e così via è partita dall’utente. Incluso solo nelle richieste verso URL potenzialmente fidati.
Non è CORS. CORS, Access-Control-Allow-Origin, è un header di risposta. Sec-Fetch-User è un header di richiesta: lo scrive il browser, prima. Non è Sec-Fetch-Dest: Dest dice dove finisce la risorsa. Non è Sec-Fetch-Mode: Mode dice come è partita. Non è Sec-Fetch-Site. Non è il banner cookie. Cinque mestieri, un popup.
MDN, glossario fetch metadata request header: questi header (prefisso Sec-) sono forbidden request header. Non si modificano da JavaScript. Servono a una policy di isolamento delle risorse. Si verifica in Network, sulla richiesta, non sul testo della privacy policy. Questo pezzo sta nel cluster Sicurezza, accanto a Dest, Mode e Site.
Solo ?1: se manca, non è un no
MDN, sintassi. Header di richiesta. Una sola direttiva: il valore sarà sempre ?1. Quando la richiesta è innescata da qualcosa di diverso da una user activation, la specifica chiede ai browser di omettere l’header del tutto. Non è CORS-safelisted. Non esiste, in pagina MDN, un token ?0.
| Cosa vedi in Network (MDN) | Cosa significa, secondo MDN |
|---|---|
Sec-Fetch-User: ?1 | la richiesta è partita da una user activation |
| header assente | nessuna user activation: il browser lo omette, non scrive un no |
?0 | non è un valore in scheda MDN |
Esempio MDN: l’utente clicca un link verso un’altra pagina stessa origine. Gli header della richiesta diventano Sec-Fetch-Dest: document, Sec-Fetch-Mode: navigate, Sec-Fetch-Site: same-origin, Sec-Fetch-User: ?1. Quattro header, un click. Un fetch() da script, senza gesto, non porta questo header: Dest in quel caso è empty, Mode non è navigate, User non c’è. Lo spec è Fetch Metadata Request Headers. Lo mette il browser. Il banner non lo scrive.
Dest, Mode, Site: non il banner
MDN, stessa famiglia. Sec-Fetch-Dest dice dove finisce: document, image, script, empty. Sec-Fetch-Mode dice come è partita: navigate, cors, no-cors. Sec-Fetch-Site dice da dove: same-origin, same-site, cross-site, none. User dice se c’è stato un gesto. Quattro header, una richiesta. Non è CSP. Non è HSTS. Non è Clear-Site-Data. Non è CORP.
MDN, in testa alla pagina: disponibilità limitata, non Baseline, perché non funziona in alcuni browser molto usati. Data di modifica della pagina Sec-Fetch-User: 28 settembre 2026. Rilettura: 2 ottobre 2026. Si verifica in Network, sugli header della richiesta, non sul testo «Accetta tutti». Un server che tratta l’assenza dell’header come «non è un utente» sta leggendo un vuoto, non un token.
Errori da evitare
Impostare
Sec-Fetch-Userda JavaScript o in un tag meta: MDN, forbidden request header.Aspettarsi
?0quando non c’è un click: MDN, l’header si omette.Trattarlo come
Sec-Fetch-Mode: User dice se c’è stato un gesto, Mode dice come è partita.Usarlo come sostituto di CORS: uno è richiesta, l’altro è risposta.
Verificare l’effetto sulla privacy policy invece che in Network, sulla richiesta.
Darlo per Baseline: MDN, 2 ottobre 2026, lo marca limited availability.
In sintesi
Sec-Fetch-User è un header di richiesta, in HTTPS, scritto dal browser. Vale sempre ?1 se c’è user activation. Se non c’è, manca. Non si imposta da JavaScript. Non è CORS. Non è Dest. Non è Mode. Non è Site. Non è il banner. Si verifica in Network. MDN, 2 ottobre 2026.