"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como resolver problemas de CORS em JAX-RS com Jersey?

Como resolver problemas de CORS em JAX-RS com Jersey?

Publicado em 2024-12-21
Navegar:139

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

Tratando CORS com JAX-RS usando Jersey

Problema: Você está encontrando um problema de CORS ao lidar com solicitações com JAX-RS e Jersey. Especificamente, o servidor não está configurando os cabeçalhos CORS necessários, levando ao erro "Nenhum cabeçalho 'Access-Control-Allow-Origin' está presente no recurso solicitado."

Solução: Para lidar com CORS em JAX-RS com Jersey, você precisa implementar um ContainerResponseFilter. A diferença na implementação depende se você está usando Jersey 1.x ou 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 adicionais:

  • Certifique-se de que o filtro CORS esteja registrado com o objeto ResourceConfig.
  • Para melhor manuseio, considere usar um implementação mais robusta que diferencia entre solicitações CORS simples e de simulação.
  • Consulte a implementação do CORSFilter em RESTeasy para uma visão mais abrangente exemplo.
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3