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"); } }
Enregistrement du filtre
Le filtre CORS peut être enregistré dans ResourceConfig comme suit :
final ResourceConfig resourceConfig = new ResourceConfig(); resourceConfig.register(CORSFilter.class);
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; } }
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>
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!