
Recibimos este error:
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://stats.g.doubleclick.net
En nuestra configuración de nginx tenemos:
add_header X-Frame-Options SAMEORIGIN always;
add_header X-Xss-Protection "1; mode=block" always;
add_header X-Content-Type-Options nosniff always;
add_header Content-Security-Policy "default-src 'self' https: data: 'unsafe-inline' 'unsafe-eval';" always;
add_header Referrer-Policy "no-referrer-when-downgrade";
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains";
No estoy seguro de la directiva y su sintaxis sobre cómo permitir solo doubleclick.net
nuestro propio dominio.
Respuesta1
Dentro de location
(con una proxy_pass
directiva por ejemplo) puedes generar los encabezados correctos dinámicamente:
if ($http_origin ~ '^(?:https?://)?(?:[a-z0-9_.-]+\.)?(?:doubleclick\.net|example\.com)$')
{
more_set_headers 'Access-Control-Allow-Origin: $http_origin';
more_set_headers 'Access-Control-Allow-Methods: GET, OPTIONS, POST';
}
Pregunte si no comprende las expresiones regulares.
Puedes reemplazarlo more_set_headers
con add_header
si no tienes Ubuntu, nginx-extras
por ejemplo. Tenga en cuenta la sintaxis ligeramente diferente.
Esta solución es lo suficientemente segura para ese propósito. Hasta donde yo sé, no es tan fácil falsificar el encabezado de origen en un navegador estándar. Con curl
puedes (probarlo):
curl -H 'Origin: https://example.com' -I -L 'https://example.com' 2>/dev/null | grep -i access-control
Y:
curl -H 'Origin: https://stats.g.doubleclick.net' -I -L 'https://example.com' 2>/dev/null | grep -i access-control
Ambos deberían devolver dos access-control
encabezados. No probado.