Soporte/Solución de problemas
Solución de problemas

Script de Flowsery Analytics bloqueado por Content Security Policy (CSP)

Si has agregado el fragmento de seguimiento de Flowsery Analytics pero no aparecen visitas, los encabezados de Content Security Policy (CSP) de tu sitio probablemente estan impidiendo que se cargue.

Diagnosticar un problema de CSP

  1. Abre tu sitio en Chrome o Firefox
  2. Abre DevTools (F12 o Cmd+Shift+I)
  3. Cambia a la pestana Consola
  4. Busca un error similar a:
Code
Refused to load the script 'https://cdn.flowsery.com/main.js' because it violates the following Content Security Policy directive: "script-src 'self'"

Ver este mensaje confirma que las reglas CSP estan impidiendo que el script de Flowsery Analytics se ejecute.

Entender Content Security Policy

Un CSP es un encabezado HTTP que instruye a los navegadores sobre que recursos externos (scripts, hojas de estilo, imagenes, etc.) tienen permitido cargarse en una pagina. Cuando analytics.flowsery.com no esta incluido en la politica, el navegador bloquea silenciosamente el script -- resultando en que no se recopilen datos en absoluto.

Resolver el problema

Agrega analytics.flowsery.com a la directiva script-src dentro de tu encabezado CSP. Los pasos especificos varian segun la plataforma.

Next.js

Actualiza el encabezado Content-Security-Policy dentro de tu next.config.js:

JavaScript
const ContentSecurityPolicy = `
  script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdn.flowsery.com;
`;
 
module.exports = {
  async headers() {
    return [
      {
        source: '/(.*)',
        headers: [
          {
            key: 'Content-Security-Policy',
            value: ContentSecurityPolicy.replace(/\n/g, ''),
          },
        ],
      },
    ];
  },
};
JSON
{
  "headers": [
    {
      "source": "/(.*)",
      "headers": [
        {
          "key": "Content-Security-Policy",
          "value": "script-src 'self' 'unsafe-inline' https://cdn.flowsery.com;"
        }
      ]
    }
  ]
}
Code
/*
  Content-Security-Policy: script-src 'self' 'unsafe-inline' https://cdn.flowsery.com;

Etiqueta meta HTML

Cuando no puedes modificar los encabezados del servidor, una etiqueta meta dentro de <head> es una alternativa:

HTML
<head>
  <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline' https://cdn.flowsery.com;" />
</head>

Ten en cuenta que este enfoque solo tiene efecto cuando no hay un encabezado CSP a nivel de servidor presente -- los encabezados del servidor siempre anulan las etiquetas meta.

Nginx

Nginx
add_header Content-Security-Policy "script-src 'self' 'unsafe-inline' https://analytics.flowsery.com;" always;
APACHE
Header set Content-Security-Policy "script-src 'self' 'unsafe-inline' https://analytics.flowsery.com;"

WordPress

Si dependes de un plugin de seguridad como WP Cerber, Sucuri o Wordfence, navega a su configuracion de CSP o "HTTP headers" y agrega https://analytics.flowsery.com a la lista de fuentes de scripts permitidas. Cuando tu tema configura CSP directamente en functions.php:

PHP
header("Content-Security-Policy: script-src 'self' 'unsafe-inline' https://analytics.flowsery.com;");

Estas detras de un proxy?

Si has configurado un proxy para Flowsery Analytics, el script se sirve desde tu propio dominio. En ese escenario, 'self' en tu CSP ya lo permite, por lo que no deberian ser necesarios cambios adicionales. Si los problemas persisten despues del proxy, verifica que el endpoint del proxy este en el mismo dominio que tu sitio web.

Usas connect-src?

Si tu CSP tambien limita connect-src (que controla donde el navegador puede enviar datos via fetch/XHR), incluye analytics.flowsery.com en esa directiva tambien:

Code
Content-Security-Policy: script-src 'self' https://cdn.flowsery.com; connect-src 'self' https://analytics.flowsery.com;

Sigues experimentando problemas?

  • Confirma que estas modificando el encabezado CSP activo. Ciertos proveedores de hosting o CDNs pueden anular encabezados.
  • Busca multiples encabezados CSP -- los navegadores aplican la combinacion mas restrictiva de todos los encabezados presentes.
  • Limpia la cache de tu navegador y vuelve a probar en una ventana privada/incognito.
  • Cuando uses un proxy, asegurate de que tanto script-src como connect-src incluyan tu dominio de proxy.