Heim > Java > javaLernprogramm > Wie implementiert man CORS-Handling in JAX-RS mit Jersey?

Wie implementiert man CORS-Handling in JAX-RS mit Jersey?

Linda Hamilton
Freigeben: 2024-12-23 20:25:13
Original
886 Leute haben es durchsucht

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

CORS-Handhabung in JAX-RS mit Jersey

Einführung

Cross-Origin Resource Sharing (CORS) ermöglicht eine sichere Kommunikation zwischen einer Webanwendung und Ressourcen, die in einer anderen Domäne gehostet werden. Der Umgang mit CORS ist in RESTful-APIs unerlässlich, um domänenübergreifende Anfragen zu ermöglichen. JAX-RS bietet einen praktischen Mechanismus für die Handhabung von CORS mithilfe benutzerdefinierter Filter.

Filterimplementierung für Jersey 2.x

In Jersey 2.x kann ein ContainerResponseFilter verwendet werden um CORS-Header zu Antworten hinzuzufügen. Der folgende Filter fügt die notwendigen Header hinzu:

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

Registrieren des Filters

Der CORS-Filter kann in ResourceConfig wie folgt registriert werden:

final ResourceConfig resourceConfig = new ResourceConfig();
resourceConfig.register(CORSFilter.class);
Nach dem Login kopieren

Filterimplementierung für Jersey 1.x

Für Jersey 1.x kann auch ein ContainerResponseFilter verwendet werden:

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

Web.xml-Konfiguration für Jersey 1.x

Konfigurieren Sie in web.xml den Filter wie folgt:

<init-param>
  <param-name>com.sun.jersey.spi.container.ContainerResponseFilters</param-name>
  <param-value>com.yourpackage.CORSFilter</param-value>
</init-param>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie implementiert man CORS-Handling in JAX-RS mit Jersey?. 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