Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

260
Vistas
Política de seguridad de contenido y llamada a la API REST: ¿cómo funciona?

Me resulta difícil entender un error que arroja mi aplicación cuando intento invocar una API REST.

Mi aplicación, un HTML puro, basado en JavaScript usando jQuery, se ejecuta en el servidor Jetty. El servidor ha implementado Content-Security-Policy :

 Custom HTTP headers to be added to our responses: Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; connect-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline'; base-uri 'self'; frame-ancestors 'self'; font-src 'self';frame-src 'self'|X-Frame-Options: SAMEORIGIN|X-Content-Type-Options: nosniff|X-XSS-Protection: 1; mode=block| Referrer-Policy: strict-origin|Feature-Policy: 'none'|Strict-Transport-Security: max-age=63072000; includeSubDomains; preload

Entiendo esta parte. Cualquiera que intente acceder a mi aplicación debe cumplir con estas restricciones.

Sin embargo, el código JavaScript en mi aplicación intenta llamar a una API REST Spring Boot que se ejecuta en la misma máquina virtual Linux (http://localhost:8080/... o http://server-host-name:8080/...) . Al hacerlo, se Content Security Policy violated when accessing http://localhost:8080...: content-src 'self' . Esto me confunde. Intentar acceder a mi aplicación en Jetty sin adherirse a la política de seguridad debería generar un error. Pero, ¿por qué arrojaría un error cuando la aplicación en Jetty está llamando a una API Spring Boot que no tiene tal restricción?

¿Necesito relajar la restricción de la política de seguridad de contenido en el servidor Jetty? Si es así, ¿por qué?

Resumen :
REST API: Spring Boot HTTP API ejecutándose en la misma VM de Linux
Jetty Server: restricción de CSP como se mencionó anteriormente
Aplicación de JavaScript en Jetty: llamando a la API Spring Boot

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Brevemente : debe agregar http://localhost:8080 a la directiva default-src .

Tl; DR; : el token 'self' es insidioso, porque intuitivamente lo dotas de poderes que no logra cumplir.

Los navegadores reemplazan el token 'self' con el "origen de la tupla" ( esquema + nombre_de_host + número_de_puerto ) de la URL de la página desde la barra de direcciones del navegador, y luego agregan algo de magia específica de CSP:

  • permitir ws: + host_name + ws_standard_port
  • permitir actualizar ws: a wss: y http: a https: en navegadores CSP3

Entonces que tenemos:

  1. Su aplicación usa fetch para acceder a la API REST de Spring Boot, que debería estar cubierta por la directiva connect-src faltante, por lo tanto, el navegador usa default-src como respaldo.
  2. El navegador transforma default-src 'self' en default-src http://your_domain.com:80 o default-src https://your_domain.com:443 (dependiendo de cómo cargue la página).

Como puede ver, ninguno de estos permite http://localhost:8080 . Aunque en realidad localhost es un alias de your_domain.com , pero CSP no lo sabe, y solo bloquea debido a la falta de coincidencia de host_name + port_number .

Pero si va a cargar la aplicación con la URL http://localhost:8080/your_app_path , se permitirá buscar en REST API porque está cubierto por 'self'

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda