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

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

DDD
Libérer: 2024-12-19 15:34:14
original
829 Les gens l'ont consulté

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 de mise en œuvre 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<String, Object> 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");
    }
}
Copier après la connexion

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;
    }
}
Copier après la connexion

Supplémentaire Remarques :

  • Assurez-vous que le filtre CORS est enregistré avec l'objet ResourceConfig.
  • Pour une meilleure gestion, envisagez d'utiliser une implémentation plus robuste qui fait la différence entre les requêtes CORS simples et les requêtes CORS en amont. .
  • Reportez-vous à l'implémentation de CORSFilter dans RESTeasy pour un exemple plus complet.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal