Maison >Java >javaDidacticiel >Comment implémenter le filtrage CORS avec JAX-RS et Jersey (1.x et 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"); } }
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; } }
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!