Maison > Java > javaDidacticiel > Comment implémenter la gestion CORS dans JAX-RS avec Jersey ?

Comment implémenter la gestion CORS dans JAX-RS avec Jersey ?

Linda Hamilton
Libérer: 2024-12-23 20:25:13
original
885 Les gens l'ont consulté

How to Implement CORS Handling in JAX-RS with Jersey?

Gestion CORS dans JAX-RS avec Jersey

Introduction

Partage de ressources inter-origines (CORS) permet une communication sécurisée entre une application Web et des ressources hébergées sur un domaine différent. La gestion de CORS est essentielle dans les API RESTful pour permettre les requêtes inter-domaines. JAX-RS fournit un mécanisme pratique pour gérer CORS à l'aide de filtres personnalisés.

Implémentation de filtre pour Jersey 2.x

Dans Jersey 2.x, un ContainerResponseFilter peut être utilisé pour ajouter des en-têtes CORS aux réponses. Le filtre suivant ajoute les en-têtes nécessaires :

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

@Provider
public class CORSFilter implements ContainerResponseFilter {

    @Override
    public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) {
        MultivaluedMap<String, String> headers = responseContext.getHeaders();

        headers.add("Access-Control-Allow-Origin", "*");
        headers.add("Access-Control-Allow-Headers", "Content-Type, Accept, X-Requested-With");
        headers.add("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS, HEAD");
    }
}
Copier après la connexion

Enregistrement du filtre

Le filtre CORS peut être enregistré dans ResourceConfig comme suit :

final ResourceConfig resourceConfig = new ResourceConfig();
resourceConfig.register(CORSFilter.class);
Copier après la connexion

Implémentation du filtre pour Jersey 1.x

Pour Jersey 1.x, un ContainerResponseFilter peut également être utilisé :

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

@Provider
public class CORSFilter implements ContainerResponseFilter {

    @Override
    public ContainerResponse filter(ContainerRequestContext requestContext, ContainerResponse response) {

        response.getHttpHeaders().add("Access-Control-Allow-Origin", "*");
        response.getHttpHeaders().add("Access-Control-Allow-Headers", "Content-Type, Accept, X-Requested-With");
        response.getHttpHeaders().add("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS, HEAD");

        return response;
    }
}
Copier après la connexion

Configuration Web.xml pour Jersey 1.x

Dans web.xml, configurez le filtre comme suit :

<init-param>
  <param-name>com.sun.jersey.spi.container.ContainerResponseFilters</param-name>
  <param-value>com.yourpackage.CORSFilter</param-value>
</init-param>
Copier après la connexion

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