"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment résoudre les problèmes CORS dans JAX-RS avec Jersey ?

Comment résoudre les problèmes CORS dans JAX-RS avec Jersey ?

Publié le 2024-12-21
Parcourir:446

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

Gestion de CORS avec JAX-RS à l'aide de Jersey

Problème : Vous rencontrez un problème CORS lors du traitement des requêtes avec JAX-RS et Jersey. Plus précisément, le serveur ne définit pas les en-têtes CORS nécessaires, ce qui entraîne l'erreur « Aucun en-tête 'Access-Control-Allow-Origin' n'est présent sur la ressource demandée. »

Solution : Pour gérer CORS dans JAX-RS avec Jersey, vous devez implémenter un ContainerResponseFilter. La différence d'implémentation dépend de si vous utilisez 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;
    }
}

Remarques supplémentaires :

  • Assurez-vous que le filtre CORS est enregistré avec l'objet ResourceConfig.
  • Pour une meilleure gestion, envisagez d'utiliser un implémentation plus robuste qui différencie les requêtes CORS simples et en amont.
  • Reportez-vous à l'implémentation de CORSFilter dans RESTeasy pour une description plus complète. exemple.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3