Le preoccupazioni per la privacy sono ai massimi livelli e i browser hanno iniziato a imporre limitazioni alla funzionalità dei cookie di terze parti. Nel 2019, Safari ha iniziato a imporre una scadenza di 7 giorni per i cookie di terze parti e Firefox ha iniziato a bloccarli per impostazione predefinita. Nel primo trimestre del 2024, Google Chrome inizierà a bloccare i cookie di terze parti per l'1% dei suoi utenti per impostazione predefinita, per poi includere tutti gli utenti nel secondo semestre del 2024.
Che effetto avrà su di te?
Senza cookie di terze parti che li identifichino, i visitatori sono considerati nuovi utenti. In Safari questo avviene 7 giorni dopo la visita più recente, e se i cookie sono sono completamente bloccati, il visitatore viene considerato un nuovo utente a ogni visualizzazione di pagina. Le implicazioni possono essere significative: un numero di utenti gonfiato, una scarsa stabilità delle varianti nei test A/B, dati storici scollegati e altro ancora.
Per superare questo limite, devi pubblicare il nostro cookie DYID dal tuo server, rendendolo un cookie di prima parte che non è interessato da queste restrizioni.
Come pubblicare il cookie DYID dal tuo server
Nota:questa soluzione è generica. Consulta la sezione seguente per scoprire come implementare la soluzione in Shopify.
L'essenza della soluzione è che il cookie DYID deve essere impostato dall'applicazione di backend che serve il tuo sito web sul tuo dominio. I cookie impostati in questo modo sono considerati cookie di prima parte, pertanto non sono sono interessati dalle restrizioni e possono avere un periodo di scadenza più lungo. Si tratta di qualcosa che i tuoi sviluppatori devono configurare nel codice, nel modo seguente:
- Verifica se il visitatore arriva sul tuo sito con un cookie DYID (ossia è un utente abituale).
- In tal caso, duplica il cookie con un nuovo nome (_dyid_server), e imposta la data di scadenza su 1 anno.
Esempio:
supponiamo che il valore del cookie _dyid sia 7237284912004766755. Duplica il valore del cookie in un nuovo cookie, _dyid_server e imposta la data di scadenza su 1 anno impostando 31556951 come valore dell'attributo max-age.
Il risultato è il seguente cookie: _dyid_server=7237284912004766755;max-age=31556951
Ecco il flusso di questa soluzione:
- Un visitatore accede al tuo sito Web.
- Il tuo server (applicazione di backend) riceve la richiesta di restituire una pagina Web dal browser. Le richieste provenienti da utenti abituali includono il cookie _dyid .
- Il tuo server applicativo esegue le seguenti operazioni:
- Verifica se la richiesta include un cookie _dyid.
- Se trova questo cookie _dyid, lo duplica come un nuovo cookie _dyid_server .
- Quindi, restituisce il nuovo cookie come intestazione di risposta con una data di scadenza di 1 anno.
Questa operazione lo trasforma in un cookie di prima parte lato server nel browser del visitatore, pertanto non è interessato dall'applicazione della scadenza dei cookie.
(Tieni presente che il cookie _dyid continuerà ad essere restituito, questo non cambia).
- A questo punto, il nostro script utilizza il cookie _dyid_server mentre viene eseguito sulla tua pagina e il tuo visitatore vede il contenuto renderizzato del tuo sito Web.
In questo modo, non viene perso nessun dato su un utente abituale, anche se l'utente non visita il tuo sito da più di 7 giorni.
Tieni presente che, se hai abilitato la modalità di consenso attivo ai cookie, è importante attendere l'oggetto del consenso e agire in base al suo risultato. Altrimenti, potresti scrivere i cookie per gli utenti che hanno rifiutato l'iscrizione.
Esempi di codice
Ecco alcuni frammenti di codice di esempio per le piattaforme e i linguaggi di programmazione più diffusi.
>>> curl -v http://yoursite.example.com --cookie "_dyid=-3233584359067736988" 19:55:13
* Trying 172.217.18.4...
* TCP_NODELAY set
* Connected to yoursite.example.com (172.217.18.4) port 80 (#0)
> GET / HTTP/1.
> Host: yoursite.example.com
> User-Agent: curl/7.64.1
> Accept: */*
> Cookie: _dyid=-3233584359067736988
>
< HTTP/1.1 200 OK
< Date: Mon, 30 Mar 2020 16:55:16 GMT
...
< Content-Type: text/html; charset=UTF-8
...
< Set-Cookie: _dyid_server=-3233584359067736988; expires=Wed, 29-Apr-2021 16:55:16 GMT; path=/; domain=.google.com; Secure
// devi disporre del middleware cookieParser prima che possiamo fare qualcosa con i cookie
app.use(express.cookieParser());
app.use((req, res, next) => {
if (req.cookies._dyid) { // if this is a returning user and the DYID cookie exists
const dyid = req.cookies._dyid;
res.cookie('_dyid_server', dyid, { // store a new server-side cookie named "_dyid_server" with the DYID value
expires: new Date(Date.now() + 31540000000000), // Set a 1 year expiration for the new cookie
});
next();
});
...
dyid_cookie = request.COOKIES.get('_dyid')
if (req.cookies._dyid) { // if this is a returning user and the DYID cookie exists
set_cookie(‘_dyid_server’, dyid_cookie, 31557600) # Store a new server-side cookie named "_dyid_server" with the DYID value...
<?php
if(isset($_COOKIE['_dyid'])) {
$dyid_cookie = $_COOKIE['_dyid']; /* if this is a returning user and the DYID cookie exists */
setcookie('_dyid_server', $dyid_cookie, time() + 31557600); /* expire in 1 year */
}
...
Implementazione di DYID come cookie di prima parte in Shopify
Shopify offre un metodo semplice per implementare un cookie di prima parte:
- Nella tua amministrazione di Shopify, fai clic su Impostazioni.
- Fai clic su Eventi cliente.
- Fai clic su Aggiungi pixel personalizzato.
- Copia e incolla il seguente codice:
(async function(){
const max_age = 30240000;
const dyid_server = await browser.cookie.get("_dyid_server");
if (
dyid_server &&
dyid_server !== "" &&
dyid_server !== "null" &&
dyid_server !== null
) {
browser.cookie.set(`_dyid_server=${dyid_server};max-age=${max_age};path=/`);
} else {
const dyid = await browser.localStorage.getItem("_dyid");
if (dyid) {
browser.cookie.set(`_dyid_server=${dyid};max-age=${max_age};path=/`);
}
}
})()
Convalida tecnica
Questa procedura verifica che sia stato creato un cookie lato server denominato _dyid_server con lo stesso valore del cookie _dyid, ma con la data di scadenza di 1 anno. L'operazione può essere eseguita su qualsiasi browser, ma in questo esempio abbiamo usato Chrome:
- Apri una nuova finestra del browser e naviga in una qualsiasi pagina del tuo sito Web in cui sia presente lo script di Dynamic Yield.
- Apri la console per sviluppatori di Chrome (premi Comando+Opzione+J (Mac) o Ctrl+Maiusc+J (sistemi operativi Windows, Linux, Chrome).
- Vai alla scheda Rete. Seleziona Preserva registro e fai clic su Cancella ⊘ .
- Aggiorna la pagina Seleziona la prima richiesta con l'URL del tuo sito (a), e guarda nella scheda Intestazioni (b).
- Verifica che il valore di _dyid_server sia identico al valore di dyid.
il valore del cookie _dyid_server si trova nell'intestazione della richiesta. Puoi trovare il valore di dyid anche nella sezione Intestazioni delle richieste della scheda Intestazioni alla voce "cookie:" (il primo campo). Se i valori corrispondono, vuol dire che la soluzione è stata verificata.
Nota: questa convalida non può essere eseguita nell'area Scheda Applicazione › Archiviazione › Cookie perché quest'area include sia i cookie lato server che lato client, perciò alcuni di questi verranno automaticamente eliminati da Safari.