"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo resolver problemas de CORS en JAX-RS con Jersey?

¿Cómo resolver problemas de CORS en JAX-RS con Jersey?

Publicado el 2024-12-21
Navegar:280

How to Solve CORS Issues in JAX-RS with Jersey?

Manejo de CORS con JAX-RS usando Jersey

Problema: Estás encontrando un problema de CORS mientras manejas solicitudes con JAX-RS y Jersey. Específicamente, el servidor no configura los encabezados CORS necesarios, lo que genera el error "No hay ningún encabezado 'Access-Control-Allow-Origin' presente en el recurso solicitado".

Solución: Para manejar CORS en JAX-RS con Jersey, necesita implementar un ContainerResponseFilter. La diferencia en la implementación depende de si está utilizando Jersey 1.x o 2.x.

Jersey 2.x:

import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerResponseContext;
import javax.ws.rs.container.ContainerResponseFilter;
import javax.ws.rs.core.MultivaluedMap;

@Provider
public class CORSFilter implements ContainerResponseFilter {

    @Override
    public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) {
        MultivaluedMap headers = responseContext.getHeaders();
        headers.add("Access-Control-Allow-Origin", "*");
        headers.add("Access-Control-Allow-Headers", "CSRF-Token, X-Requested-By, Authorization, Content-Type");
        headers.add("Access-Control-Allow-Credentials", "true");
        headers.add("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS, HEAD");
    }
}

Jersey 1.x:

import com.sun.jersey.spi.container.ContainerResponse;
import com.sun.jersey.spi.container.ContainerResponseFilter;

@Provider
public class CORSFilter implements ContainerResponseFilter {

    @Override
    public ContainerResponse filter(ContainerResponse response) {
        response.getHttpHeaders().add("Access-Control-Allow-Origin", "*");
        response.getHttpHeaders().add("Access-Control-Allow-Headers", "CSRF-Token, X-Requested-By, Authorization, Content-Type");
        response.getHttpHeaders().add("Access-Control-Allow-Credentials", "true");
        response.getHttpHeaders().add("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS, HEAD");

        return response;
    }
}

Notas adicionales:

  • Asegúrese de que el filtro CORS esté registrado con el objeto ResourceConfig.
  • Para un mejor manejo, considere usar un Implementación más sólida que diferencia entre solicitudes CORS simples y de verificación previa.
  • Consulte la implementación de CORSFilter en RESTeasy para obtener una información más completa. ejemplo.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3