Timing-Allow-Origin: Was Analytics in der Resource Timing API sieht
Der Timing-Allow-Origin-Header steuert, wie viele Cross-Origin-Timing-Details eine Seite auslesen darf. Hier erfahren Sie, was das für datenschutzfreundliche Performance-Messung bedeutet.
Der Header, den niemand absichtlich setzt
Die meisten Teams begegnen Timing-Allow-Origin (TAO) erst, wenn ein Diagramm in ihrem Monitoring-Tool verdächtige Nullen anzeigt. Cross-Origin-Ressourcen — Schriftarten, Bilder von einem CDN, ein Drittanbieter-Skript — tauchen zwar in der Resource Timing API auf, aber ihre detaillierten Teil-Timings werden als 0 zurückgegeben, sofern der antwortende Server dies nicht ausdrücklich zulässt. Dieses Zulassen erfolgt über den TAO-Header, und ihn zu verstehen ist entscheidend, wenn Sie ehrliche Performance-Daten wollen, ohne auf invasives Tracking zurückzugreifen.
Der Resource-Timing-Standard stellt für jeden Abruf, den eine Seite durchführt, einen PerformanceResourceTiming-Eintrag bereit. Für Same-Origin-Ressourcen erhalten Sie die vollständige Aufschlüsselung: DNS-Lookup, TCP-Verbindung, TLS-Aushandlung, Request-Start und Response-Timings. Für Cross-Origin-Ressourcen schränkt die Spezifikation bewusst ein, was ein Dokument auslesen kann, denn diese feingranularen Timings können Informationen über den Netzwerkzustand eines Nutzers, den Cache-Inhalt oder das interne Verhalten eines anderen Origins preisgeben.
Was auf null gesetzt wird
Ohne einen passenden TAO-Header werden die folgenden Attribute eines Cross-Origin-PerformanceResourceTiming-Eintrags auf null begrenzt: redirectStart, redirectEnd, domainLookupStart, domainLookupEnd, connectStart, connectEnd, secureConnectionStart, requestStart, responseStart, transferSize, encodedBodySize und decodedBodySize. Sie erhalten weiterhin startTime, duration, responseEnd sowie den Ressourcen-name und initiatorType. In der Praxis bedeutet das: Sie können erkennen, dass eine Ressource geladen wurde und wie lange das insgesamt dauerte, aber nicht, wohin die Zeit floss oder wie viele Bytes über die Leitung gingen.
Die Prüfung ist durch den timing allow check-Algorithmus in der Resource-Timing-Spezifikation definiert. Eine Ressource besteht die Prüfung, wenn ihre Antwort Timing-Allow-Origin mit einem Wert trägt, der entweder dem Origin des anfragenden Dokuments entspricht oder der Wildcard * gleicht.
Timing-Allow-Origin: https://example.com
# or, to allow any origin
Timing-Allow-Origin: *
Warum das für datenschutzfreundliches Analytics wichtig ist
Monoid misst Performance aus dem Feld — echte Navigationen echter Besucher — ohne Cookies, ohne localStorage und ohne Fingerprinting. Die Resource-Timing- und Navigation-Timing-APIs sind der standardbasierte Weg dafür, und TAO ist der Mechanismus, den die Plattform nutzt, um Cross-Origin-Timing-Daten standardmäßig vertraulich zu halten.
Diese Voreinstellung ist ein Datenschutzfeature, kein Hindernis. Die Begrenzung existiert genau deshalb, um zu verhindern, dass eine Seite Drittanbieter-Origins auf Timing-Seitenkanäle hin abtastet. Wenn wir empfehlen, Timing-Allow-Origin auf Ihren eigenen statischen Assets und Ihrem CDN zu setzen, bitten wir Sie darum, Ihre eigene Infrastruktur für Ihre eigene Messung sichtbar zu machen — nicht darum, den Schutz irgendjemandes zu schwächen.
Die Core Web Vitals unterstreichen diesen Punkt. Largest Contentful Paint ist häufig ein Cross-Origin-Bild oder eine Web-Schriftart. Fehlt diesen Antworten ein TAO-Header, können Sie das LCP-Element zwar weiterhin über die Largest Contentful Paint API beobachten, verlieren aber die Request- und Response-Teil-Timings, die Ihnen verraten würden, ob langsames DNS, ein kalter TLS-Handshake oder eine große Übertragung die Verzögerung verursacht hat. Wenn Sie den Header zu Ihren Asset-Origins hinzufügen, wird aus einer undurchsichtigen Zahl eine, mit der Sie etwas anfangen können.
Richtig setzen
Einige praktische Hinweise. Erstens: Ist transferSize ungleich null, können Sie auch einen Cache-Treffer (eine kleine Übertragungsgröße) von einem Netzwerkabruf unterscheiden, was bei der Diagnose der Performance wiederholter Aufrufe unschätzbar wertvoll ist. Zweitens: Wenn Sie Schriftarten Cross-Origin ausliefern, sind das CSS-Attribut crossorigin und CORS ein von TAO getrenntes Thema — möglicherweise benötigen Sie beides. Drittens: Bevorzugen Sie, wo möglich, die Benennung konkreter Origins gegenüber *, damit nur die Dokumente die Daten erhalten, die sie legitimerweise benötigen.
Bei Cloudflare können Sie den Header am Edge mit einer Transform Rule oder in einer Worker-Antwort hinzufügen und ihn auf Ihre Asset-Pfade anwenden. Da Monoid auf demselben Edge läuft, fließen die Timing-Daten, die die Browser Ihrer Besucher sammeln, direkt in aggregierte, kennungsfreie Metriken — es ist kein Profil pro Nutzer nötig, um zu wissen, dass Ihr Hero-Bild 400ms in TLS verbringt.
Das Fazit
Timing-Allow-Origin ist ein kleiner Header mit überproportionalem Einfluss darauf, wie viel Sie aus Feld-Performance-Daten lernen können. Die Voreinstellung des Browsers — das Nullsetzen von Cross-Origin-Teil-Timings — ist ein bewusster Datenschutz und passt sauber dazu, wie datenschutzfreundliches Analytics funktionieren sollte: Aggregate aus Standard-APIs messen, die eigenen Origins ausdrücklich für Details freischalten und den Netzwerk-Fingerabdruck eines Nutzers niemals als etwas behandeln, das es zu ernten gilt. Setzen Sie TAO auf Ihren Assets, und Ihr Web-Vitals-Debugging wird schärfer — ganz ohne jegliches Tracking.
Comments
Loading comments…