Heim > Java > javaLernprogramm > Wie implementiert man CORS-Filterung mit JAX-RS und Jersey (1.x und 2.x)?

Wie implementiert man CORS-Filterung mit JAX-RS und Jersey (1.x und 2.x)?

Linda Hamilton
Freigeben: 2024-12-17 04:09:24
Original
807 Leute haben es durchsucht

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

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");
    }
}
Nach dem Login kopieren

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;
    }
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage