Umgang mit CORS mit JAX-RS und Jersey
Cross-Origin Resource Sharing (CORS) ermöglicht den sicheren Datenaustausch zwischen Ressourcen auf verschiedenen Domänen. Um CORS in Java-Anwendungen mit JAX-RS mit Jersey zu verarbeiten, kann ein ContainerResponseFilter verwendet werden. In diesem Artikel erfahren Sie, wie Sie die CORS-Filterung mit den Versionen Jersey 2.x und 1.x implementieren.
Jersey 2.x
Für Jersey 2. x erfüllt die folgende Implementierung von ContainerResponseFilter unseren Zweck effektiv:
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
Für Jersey 1.x sollte die folgende Implementierung von ContainerResponseFilter verwendet werden:
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; } }
Konfigurieren der Filter
Um diese Filter in Ihrer Anwendung zu registrieren, können Sie das Paketscannen oder die explizite Registrierung verwenden. Für Jersey 2.x sollte das Scannen von Paketen ausreichen, während Jersey 1.x möglicherweise eine explizite Registrierung in web.xml oder der ResourceConfig erfordert.
Zusätzliche Überlegungen
Bitte Beachten Sie, dass es sich bei dieser Implementierung um einen vereinfachenden Ansatz handelt und möglicherweise nicht alle CORS-bezogenen Details berücksichtigt werden. Für eine robustere und anpassbarere Lösung wird empfohlen, den von RESTeasy bereitgestellten CorsFilter zu erkunden, der den neuesten CORS-Spezifikationen entspricht.
Das obige ist der detaillierte Inhalt vonWie implementiert man CORS-Filterung mit JAX-RS und Jersey (1.x und 2.x)?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!