Timing-Allow-Origin: cosa vede l'analisi nella Resource Timing API
L'header Timing-Allow-Origin controlla quanti dettagli sui tempi cross-origin può leggere una pagina. Ecco cosa significa per la misurazione delle prestazioni orientata alla privacy.
L'header che nessuno imposta di proposito
La maggior parte dei team incontra Timing-Allow-Origin (TAO) solo quando un grafico nel loro strumento di monitoraggio mostra sospetti valori a zero. Le risorse cross-origin — font, immagini da una CDN, uno script di terze parti — compaiono nella Resource Timing API, ma i loro sotto-tempi dettagliati vengono restituiti come 0 a meno che il server che risponde non aderisca esplicitamente. Questa adesione è l'header TAO, e comprenderlo è essenziale se vuoi dati prestazionali onesti senza ricorrere a tracciamenti invasivi.
Lo standard Resource Timing espone una voce PerformanceResourceTiming per ogni fetch effettuato da una pagina. Per le risorse same-origin ottieni il dettaglio completo: risoluzione DNS, connessione TCP, negoziazione TLS, avvio della richiesta e tempi di risposta. Per le risorse cross-origin, la specifica limita deliberatamente ciò che un documento può leggere, perché quei tempi granulari possono rivelare informazioni sullo stato della rete di un utente, sul contenuto della cache o sul comportamento interno di un'altra origine.
Cosa viene azzerato
Senza un header TAO corrispondente, i seguenti attributi di una voce PerformanceResourceTiming cross-origin vengono forzati a zero: redirectStart, redirectEnd, domainLookupStart, domainLookupEnd, connectStart, connectEnd, secureConnectionStart, requestStart, responseStart, transferSize, encodedBodySize e decodedBodySize. Continui a ottenere startTime, duration, responseEnd, oltre a name e initiatorType della risorsa. In pratica significa che puoi sapere che una risorsa è stata caricata e quanto tempo ha impiegato complessivamente, ma non dove sia stato speso quel tempo né quanti byte hanno attraversato la rete.
Il controllo è definito dall'algoritmo timing allow check nella specifica Resource Timing. Una risorsa supera il controllo se la sua risposta include Timing-Allow-Origin con un valore che corrisponde all'origine del documento richiedente oppure è il carattere jolly *.
Timing-Allow-Origin: https://example.com
# or, to allow any origin
Timing-Allow-Origin: *
Perché questo conta per l'analisi orientata alla privacy
Monoid misura le prestazioni sul campo — navigazioni reali di visitatori reali — senza cookie, senza localStorage e senza fingerprinting. Le API Resource Timing e Navigation Timing sono il modo basato sugli standard per farlo, e TAO è il meccanismo che la piattaforma usa per mantenere riservati i dati di timing cross-origin per impostazione predefinita.
Questo comportamento predefinito è una funzionalità di privacy, non un ostacolo. L'azzeramento esiste proprio per impedire che una pagina sondi origini di terze parti alla ricerca di canali laterali temporali. Quando ti consigliamo di impostare Timing-Allow-Origin sui tuoi asset statici e sulla tua CDN, ti stiamo chiedendo di rendere visibile la tua infrastruttura per la tua misurazione — non di indebolire la protezione di qualcun altro.
I Core Web Vitals rafforzano il punto. Il Largest Contentful Paint è spesso un'immagine cross-origin o un web font. Se quelle risposte non hanno un header TAO, puoi comunque osservare l'elemento LCP tramite la Largest Contentful Paint API, ma perdi i sotto-tempi di richiesta e risposta che ti direbbero se il ritardo è stato causato da un DNS lento, da un handshake TLS a freddo o da un trasferimento voluminoso. Aggiungere l'header alle origini dei tuoi asset trasforma un numero opaco in uno azionabile.
Impostarlo correttamente
Alcune note pratiche. Primo, un valore transferSize diverso da zero ti permette anche di distinguere un cache hit (una dimensione di trasferimento piccola) da un fetch di rete, il che è preziosissimo quando diagnostichi le prestazioni delle visite ripetute. Secondo, se servi font cross-origin, l'attributo CSS crossorigin e il CORS sono una questione separata dal TAO — potresti aver bisogno di entrambi. Terzo, dove possibile preferisci indicare origini specifiche invece di *, così che solo i documenti che hanno legittimamente bisogno dei dati li ricevano.
Su Cloudflare, puoi aggiungere l'header all'edge con una Transform Rule o nella risposta di un Worker, applicandolo ai percorsi dei tuoi asset. Poiché Monoid gira sullo stesso edge, i dati di timing raccolti dai browser dei tuoi visitatori confluiscono direttamente in metriche aggregate e prive di identificatori — nessun profilo per singolo utente è necessario per sapere che la tua hero image trascorre 400ms in TLS.
In sintesi
Timing-Allow-Origin è un piccolo header con un'influenza sproporzionata su quanto puoi imparare dai dati prestazionali sul campo. Il comportamento predefinito del browser — azzerare i sotto-tempi cross-origin — è una salvaguardia deliberata della privacy, e si allinea perfettamente con il modo in cui dovrebbe funzionare l'analisi orientata alla privacy: misurare aggregati dalle API standard, rendere esplicitamente visibili le proprie origini nel dettaglio, e non trattare mai il fingerprint di rete di un utente come qualcosa da raccogliere. Imposta TAO sui tuoi asset, e il debug dei tuoi Web Vitals diventerà più preciso senza alcun tracciamento.
Comments
Loading comments…