Maison > Java > javaDidacticiel > Comment implémenter le filtrage CORS avec JAX-RS et Jersey (1.x et 2.x) ?

Comment implémenter le filtrage CORS avec JAX-RS et Jersey (1.x et 2.x) ?

Linda Hamilton
Libérer: 2024-12-17 04:09:24
original
804 Les gens l'ont consulté

How to Implement CORS Filtering with JAX-RS and Jersey (1.x and 2.x)?

Gestion de CORS avec JAX-RS et Jersey

Le partage de ressources cross-origine (CORS) permet un échange de données sécurisé entre des ressources sur différents domaines. Pour gérer CORS dans les applications Java utilisant JAX-RS avec Jersey, un ContainerResponseFilter peut être utilisé. Dans cet article, nous explorerons comment implémenter le filtrage CORS avec les versions Jersey 2.x et 1.x.

Jersey 2.x

Pour Jersey 2. x, l'implémentation suivante de ContainerResponseFilter répond efficacement à notre objectif :

import java.io.IOException;
import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerResponseContext;
import javax.ws.rs.container.ContainerResponseFilter;

@Provider
public class CORSFilter implements ContainerResponseFilter {

    @Override
    public void filter(ContainerRequestContext request, ContainerResponseContext response) throws IOException {
        response.getHeaders().add("Access-Control-Allow-Origin", "*");
        response.getHeaders().add("Access-Control-Allow-Headers", "CSRF-Token, X-Requested-By, Authorization, Content-Type");
        response.getHeaders().add("Access-Control-Allow-Credentials", "true");
        response.getHeaders().add("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS, HEAD");
    }
}
Copier après la connexion

Jersey 1.x

Pour Jersey 1.x, l'implémentation suivante de ContainerResponseFilter doit être utilisée :

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

@Provider
public class CORSFilter implements ContainerResponseFilter {
    @Override
    public ContainerResponse filter(ContainerRequest request, 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

Configuration des filtres

Pour enregistrer ces filtres dans votre application, vous pouvez utiliser l'analyse des packages ou l'enregistrement explicite. Pour Jersey 2.x, l'analyse des packages devrait être suffisante, tandis que Jersey 1.x peut nécessiter un enregistrement explicite dans web.xml ou dans ResourceConfig.

Considérations supplémentaires

Veuillez notez que cette implémentation est une approche simpliste et peut ne pas traiter tous les détails liés à CORS. Pour une solution plus robuste et personnalisable, il est recommandé d'explorer le CorsFilter fourni par RESTeasy, qui est conforme aux dernières spécifications CORS.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal