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
Linda HamiltonOriginal
2024-12-23 20:25:13923Durchsuche

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");
    }
}

Registrieren des Filters

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

final ResourceConfig resourceConfig = new ResourceConfig();
resourceConfig.register(CORSFilter.class);

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;
    }
}

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>

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!

Stellungnahme:
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