Consentimiento de cookies para Astro
El banner va en el layout que comparten todas las páginas, como script inline para que Astro no lo empaquete ni lo retrase. Retiene tus rastreadores hasta que el visitante elige, envía las señales de Google Consent Mode v2 y se mantiene entre las view transitions de <ClientRouter />.
Configúralo con tu agente de IA
Conecta el servidor MCP de Croombit a tu editor o agente de código y pega esto. Crea el sitio, las categorías de cookies y el banner, y edita tu código.
Con Croombit: crea un sitio para este proyecto y mantén las categorías de cookies que trae. Escribe el texto del banner y publícalo. Crea una clave publicable de TEST para localhost:3000. Es un sitio Astro: añade cmp.js con is:inline al principio del <head> del layout compartido, leyendo la clave de PUBLIC_CROOMBIT_KEY, cambia nuestras etiquetas <script> de analítica a type="text/plain" con data-tc-consent y añade un enlace "Configurar cookies" al pie.El agente trabaja en TEST. Pasar a LIVE son dos pasos en la consola: verificar tu dominio y cambiar a una clave LIVE; consulta pasar a LIVE.
O a mano
1. Añade la etiqueta a tu layout
Pon la clave en .env como PUBLIC_CROOMBIT_KEY (pk_test_… en desarrollo, pk_live_… en producción). is:inline la deja exactamente donde la pones.
---
// src/layouts/Layout.astro — the layout every page uses
const key = import.meta.env.PUBLIC_CROOMBIT_KEY;
---
<html lang="en">
<head>
<meta charset="utf-8" />
<!-- is:inline: Astro must not bundle or defer it -->
<script is:inline src="https://croombit.com/cmp.js" data-tc-api-key={key}></script>
<!-- …everything else after it -->
</head>
<body>
<slot />
</body>
</html>2. Retén los rastreadores
Cambia su type a text/plain y añade data-tc-consent. Astro no toca un script con atributos, así que queda inerte hasta que el visitante acepta esa categoría.
<script type="text/plain" data-tc-consent="analytics" async
src="https://www.googletagmanager.com/gtag/js?id=G-XXXX"></script>
<script type="text/plain" data-tc-consent="analytics">
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-XXXX');
</script>3. Lista de cookies y enlace de ajustes
La lista en tu página de política de cookies y el enlace en el componente del pie:
<div data-tc-cookie-declaration></div>
<a href="#" data-tc-open-preferences>Configurar cookies</a>Preguntas
¿Funciona con view transitions (<ClientRouter />)?
Sí. El banner y el botón flotante se mantienen en cada navegación, y los scripts etiquetados de la página siguiente se ejecutan en cuanto se acepta su categoría.
¿Funciona con un build estático?
Sí. La etiqueta es HTML normal en cada página generada; no hace falta servidor.
Relacionado
- Consentimiento de cookies para cualquier web
- Consentimiento de cookies para Next.js
- Consentimiento de cookies para React
- Consentimiento de cookies para Vue y Nuxt
- Consentimiento de cookies para SvelteKit
- Consentimiento de cookies para React Router y Remix
- Consentimiento de cookies para Laravel
- Consentimiento de cookies para Django
- Consentimiento de cookies para Ruby on Rails
- Consentimiento de cookies para WordPress
- Consentimiento de cookies para Webflow
- Consentimiento de cookies para Framer
- Consentimiento de cookies para Hugo y Jekyll
- Guía: banner de cookies
- Consola: Cookies (escáner)
- TCF, Consent Mode y GPP
- Google Consent Mode v2: modo básico frente a avanzado