Aktivieren Sie die CORS for OPTIONS-Anfrage mit Spring Framework

8

Jedes Mal, wenn ich einen PUT Ajax-Aufruf an meinen Dienst mache, wird der folgende Fehler zurückgegeben:

  

XMLHttpRequest kann Ссылка nicht laden. Die Antwort auf die Preflight-Anforderung übergibt die Zugriffskontrollprüfung nicht: Auf der angeforderten Ressource ist kein Header "Access-Control-Allow-Origin" vorhanden. Origin ' Ссылка ' ist daher nicht erlaubt. Die Antwort hatte den HTTP-Statuscode 403.

Nach zwei Tagen der Untersuchung habe ich versucht, die nächste Lösung für meinen Code auszuprobieren.

Dies ist die Hauptklasse , in der ich die erforderlichen Klassen lade und die Anwendung starte:

%Vor%

Der DispatcherServilet-Initialisierer , in dem ich die Funktion dispatchOptionsRequest:

aktiviere %Vor%

Ein Controller für alle OPTIONS Anfragen:

%Vor%

Was mache ich falsch mit der Konfiguration?

    
daniegarcia254 09.06.2016, 18:22
quelle

2 Antworten

11

Schließlich war der DispatcheServlet Anpassung Initializer die Klasse, die wirklich mein Problem gelöst hat. Die OPTIONS-Anfrage ist fehlgeschlagen, weil der optionsController , den ich implementiert habe, falsch war.

Also habe ich den optionsController entfernt, und durch Hinzufügen der Methode handle in meinem Rest-Controller für die OPTIONS-Anfrage wurde das Problem gelöst :

%Vor%     
daniegarcia254 09.06.2016 20:08
quelle
3

Wenn Sie eine moderne Version von Spring (4.2) verwenden, können Sie von der @CrossOrigin profitieren. In der Tat, wenn Sie Spring & lt; 4.2v Sie können einen Servlet-Filter erstellen und den Header für die CORS-Unterstützung wie folgt anhören:

%Vor%

im Spring Boot können Sie diesen Filter als Spring Bean registrieren und Spring registriert den Filter für Sie.

Ich hoffe, dass dir das weiterhilft.

    
Valerio Vaudi 09.06.2016 21:14
quelle

Tags und Links