In questa guida
In breve: in un'applicazione Laravel il cookie banner si aggiunge con una riga nel layout Blade comune a tutte le pagine, come primo elemento del <head>. Non serve un pacchetto Composer: la chiave del sito sta nel file .env, i servizi esterni noti vengono bloccati in automatico e gli script dell'applicazione si attivano dopo il consenso con un attributo.
Cosa serve in un'applicazione Laravel
Le regole sono le stesse di qualsiasi sito (vedi le linee guida del Garante), ma in un'applicazione su misura gli script sono spesso sparsi tra layout, viste e componenti. Il banner deve quindi:
- caricarsi prima di
@vite, Google Tag Manager e qualsiasi altro script; - bloccare in automatico i servizi esterni riconosciuti, anche quelli caricati da altri script;
- offrire un modo semplice per attivare gli script dell'applicazione solo dopo il consenso.
Installazione in tre passi
1. La chiave nel file .env, copiata dal pannello Cookie Smart, nella pagina del sito:
COOKIESMART_SITE_KEY=la-chiave-del-tuo-sito
2. La configurazione in config/services.php:
'cookiesmart' => [
'key' => env('COOKIESMART_SITE_KEY'),
],
3. Lo script nel layout (ad esempio resources/views/layouts/app.blade.php), come primo elemento del <head>:
<head>
@if(config('services.cookiesmart.key'))
<script src="https://cookiesmart.it/api/c/{{ config('services.cookiesmart.key') }}.js"></script>
@endif
<meta charset="utf-8">
@vite(['resources/css/app.css', 'resources/js/app.js'])
...
Attivare i tuoi script solo dopo il consenso
Facebook, Hotjar, YouTube, Google Maps e gli altri servizi riconosciuti vengono bloccati in automatico. Per uno script tuo basta indicare la categoria e usare type="text/plain": il browser non lo esegue finché il visitatore non accetta quella categoria.
<script type="text/plain" data-cookiesmart-category="marketing">
// codice eseguito solo con il consenso al marketing
</script>
<script type="text/plain" data-cookiesmart-category="analytics" src="/js/statistiche.js"></script>
Le categorie sono functional, analytics e marketing. Per gli script esterni il type="text/plain" evita anche che il browser li scarichi prima del consenso.
Nessun pacchetto da installare
Una riga nel layout e il tuo progetto Laravel ha banner conforme, Consent Mode v2 e registro dei consensi.
I cookie di Laravel sono tecnici
Laravel installa due cookie in ogni applicazione web:
| Cookie | A cosa serve | Consenso |
|---|---|---|
nome_app_session (es. laravel_session) | Sessione dell'utente | Non serve: tecnico |
XSRF-TOKEN | Protezione dei moduli dagli attacchi CSRF | Non serve: tecnico |
Il nome del cookie di sessione deriva da APP_NAME, o da SESSION_COOKIE se impostato. Entrambi i cookie vanno comunque indicati nell'informativa.
Il link «Preferenze cookie»
Il visitatore deve poter cambiare idea in ogni momento. Basta un link nel footer del layout:
<a href="#cookiesmart-preferences">Preferenze cookie</a>
Livewire, Inertia e frontend separati
Lo script va caricato una sola volta nel layout principale, quello che contiene il <head>. Nelle applicazioni a pagina singola il banner resta attivo durante la navigazione interna. Se il frontend è un'applicazione separata (ad esempio Vue o React con Laravel come API), lo script va nell'index.html del frontend.
Domande frequenti
Serve un pacchetto Composer?
No: basta lo script nel layout Blade comune a tutte le pagine, con la chiave del sito letta dal file .env.
I cookie di sessione di Laravel richiedono il consenso?
No. Il cookie di sessione e quello per la protezione CSRF (XSRF-TOKEN) sono cookie tecnici, necessari al funzionamento dell'applicazione.
Come blocco uno script mio fino al consenso?
Si marca il tag con type="text/plain" e data-cookiesmart-category con la categoria (functional, analytics o marketing): il banner lo attiva quando il visitatore accetta quella categoria.
Questa guida ha scopo informativo e non sostituisce una consulenza legale. I riferimenti normativi sono aggiornati alla data indicata in alto.