„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie löst man CORS-Probleme in JAX-RS mit Jersey?

Wie löst man CORS-Probleme in JAX-RS mit Jersey?

Veröffentlicht am 21.12.2024
Durchsuche:321

How to Solve CORS Issues in JAX-RS with Jersey?

Verarbeitung von CORS mit JAX-RS unter Verwendung von Jersey

Problem: Bei der Bearbeitung von Anfragen tritt ein CORS-Problem auf mit JAX-RS und Jersey. Insbesondere setzt der Server nicht die erforderlichen CORS-Header, was zu dem Fehler „Auf der angeforderten Ressource ist kein ‚Access-Control-Allow-Origin‘-Header vorhanden“ führt.“

Lösung: Um CORS in JAX-RS mit Jersey zu verarbeiten, müssen Sie einen ContainerResponseFilter implementieren. Der Unterschied in der Implementierung hängt davon ab, ob Sie Jersey 1.x oder 2.x verwenden.

Jersey 2.x:

import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerResponseContext;
import javax.ws.rs.container.ContainerResponseFilter;
import javax.ws.rs.core.MultivaluedMap;

@Provider
public class CORSFilter implements ContainerResponseFilter {

    @Override
    public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) {
        MultivaluedMap headers = responseContext.getHeaders();
        headers.add("Access-Control-Allow-Origin", "*");
        headers.add("Access-Control-Allow-Headers", "CSRF-Token, X-Requested-By, Authorization, Content-Type");
        headers.add("Access-Control-Allow-Credentials", "true");
        headers.add("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS, HEAD");
    }
}

Jersey 1.x:

import com.sun.jersey.spi.container.ContainerResponse;
import com.sun.jersey.spi.container.ContainerResponseFilter;

@Provider
public class CORSFilter implements ContainerResponseFilter {

    @Override
    public ContainerResponse filter(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;
    }
}

Zusätzliche Hinweise:

  • Stellen Sie sicher, dass der CORS-Filter beim ResourceConfig-Objekt registriert ist.
  • Zur besseren Handhabung sollten Sie die Verwendung von a in Betracht ziehen Robustere Implementierung, die zwischen einfachen und Preflight-CORS-Anfragen unterscheidet.
  • Weitere Informationen finden Sie in der CORSFilter-Implementierung in RESTeasy Beispiel.
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3