Im diesem Beitrag beschreibe ich die computeEffectiveTldPlusOne-API und wie man sie im GTM-Server-Container einsetzen kann.
computeEffectiveTldPlusOne API kurz erklärt
Mit der computeEffectiveTldPlusOne API kann man sich die effektive Top-Level-Domain + 1 zurückgegeben lassen -> also eTLD+1. Die Funktion nimmt einen Parameter entgegen, der als String eine Domain oder URL erwartet. Der übergebene String (also Domain oder URL) wird dann mit der Public Suffix List gegengeprüft und gibt die höchste Domain-Ebene, auf die man ein Cookie setzen kann, zurück.
Hintergrundwissen
Um ein HTTP-Cookie zu setzen, muss man deren Geltungsbereich definieren. Surft also ein Nutzer auf example.com, so muss sichergestellt werden, dass die Website ein Cookie nur auf example.com setzen kann. Ursprünglich wurde dies sichergestellt, indem Browser einen Algorithmus einsetzten, der es verhinderte Cookies breit zu setzen. So stellte man sicher, dass die Domain example.com keine Cookies auf nur .com setzen durfte. Würde das fälschlicherweise doch geschehen, so hätte dies weitreihende, negative Konsequenzen für die Sicherheit. Bei Top-Level-Domains, wo Registrierungen auf zweiter Domain-Ebene stattfinden, funktionierte dies. Aber bei Top-Level-Domains, wo Registrierungen nur auf dritter Ebene zulässig sind, funktionierte der initial angewendete Algorithmus nicht mehr. Ein Beispiel wäre die Domain co.uk für Großbritannien. In diesem Fall würde eine Domain wie example.co.uk ein Cookie für co.uk setzen und lesen dürfen, was aufgrund der verbreiteten Nutzung dieser TLD zu einem Sicherheitsrisiko führt.
Aus diesem Grund wurde die Public Suffix List erschaffen, die alle bekannten generischen und länderspezifischen Domainendungen enthält und von der Mozilla Foundation gepflegt wird. Die Browser Firefox, Chrome, Opera und Internet Explorer nutzen diese Liste, um den Geltungsbereich von HTTP-Cookies zu setzen. Versucht bspw. die Website example.co.uk ein Cookie für co.uk zu setzen, wird das mittels dieser Liste und Richtlinie verhindert.
Mit der computeEffectiveTldPlusOne API kann man nun anhand dieser Liste die eTLD+1 berechnen und für das Setzen von Cookies nutzen, um mit den Browservorgaben kompatibel zu sein.
Beispiel und Syntax
Die API kann wie folgt importiert werden:
const computeEffectiveTldPlusOne = require('computeEffectiveTldPlusOne');
Im Anschluss kann das eTLD+1 Ergebnis zurückgegeben werden, sofern eine gültige Domain oder URL als String mitgegeben wird:
const domainEtld = computeEffectiveTldPlusOne('www.demirjasarevic.com');
Zurückgegeben wird in diesem Fall:
demirjasarevic.com
Wird der Funktion kein Wert bzw. Parameter mitgegeben, gibt die Funktion null zurück. Bei einer ungültigen Domain oder URL im übergebenen Parameter, gibt die Funktion einen leeren Wert zurück. Und sollte die API die Public Suffix List nicht erreichen können, dann wird der Parameter wie übergeben wieder zurückgegeben.
Praktisches Beispiel der computeEffectiveTldPlusOne API
In einem Google Tag Manager-Client kann diese API genutzt werden, um ein Cookie auf der höchstmöglichen Domain-Ebene zu setzen. Zuerst werden die entsprechenden APIs und Variablen geladen und gesetzt:
const setCookie = require('setCookie');
const getRequestHeader = require('getRequestHeader');
const computeEffectiveTldPlusOne = require('computeEffectiveTldPlusOne');
const origin = getRequestHeader('origin');
const cookieDomain = computeEffectiveTldPlusOne(origin);
Dann kann das Cookie im Response bspw. wie folgt gesetzt werden. Dabei wird die zurückgelieferte eTLD+1 aus der entsprechenden Konstante als Attribut mitgegeben:
setCookie('cookiename', 'cookiewert', {
domain: cookieDomain,
'max-age': 63072000,
path: '/',
secure: true,
sameSite: 'lax',
httpOnly: true
});
Der Cookie-Name und -Wert sind im Beispiel provisorisch gesetzt, müssen natürlich entsprechend der eigenen Logik angepasst werden.