Ich habe ein Problem im Zusammenhang mit dem HTTP-Antwortheader "Access-Control-Allow-Origin", wenn ich eine grundlegende Authentifizierung mit Spring verwende. Wenn ich mich manuell authentifiziere, wie der folgende Code (ich benutze REST):
%Vor%alles funktioniert gut, ich bekomme die folgende HTTP-Antwort:
%Vor%Wie Sie sehen können, ist "Access-Control-Allow-Origin" in der Antwort vorhanden. Alles ist gut hier. Ich kann einen 401-Fehler in meinem Ajax-Anruf abfangen.
Aber wenn die Authentifizierung automatisch ausgeführt wird, wie der folgende Code:
%Vor%Die HTTP-Antwort lautet:
%Vor%In der Antwort gibt es kein "Access-Control-Allow-Origin".
Google Chrome-Konsole zeigt den folgenden Fehler:
%Vor%Mein Ajax-Aufruf gibt keinen 401-nicht autorisierten Fehler zurück, obwohl die HTTP-Antwort ihn zurückgibt (Antwort oben), erhalte ich einen unbekannten Fehler.
Ich habe herausgefunden, dass ich für alle Browser einen "Access-Control-Allow-Origin" in der HTTP-Antwort benötige, sonst erzeugen sie eine Art stillen Fehler und mein Ajax-Aufruf schlägt fehl (kann den 401 nicht abfangen) Error). Tatsächlich wird Javascript stillschweigend fehlschlagen. XMLHttpRequest akzeptiert keine HTTP-Antwort ohne "Access-Control-Allow-Origin".
Wie kann ich Spring diesen "Access-Control-Allow-Origin" in HTTP-Antworten für die Standardauthentifizierung injizieren lassen?
das ist mein Spring Security xml:
%Vor%Ich habe meinen eigenen Weg gefunden:
Zunächst erinnere ich mich nicht wirklich, warum ich diese Zeile hierher gesetzt habe, aber es hat meinen Code durcheinander gebracht:
%Vor%Zweitens, diese Antwort zeigt mir den Pfad: Behandeln Sie nicht autorisierte Fehlermeldungen für die Standardauthentifizierung in Spring Security . Ich musste einen benutzerdefinierten Authentifizierungseingangspunkt erstellen, um die Access-Control-Allow-Origin-Sache zu senden.
Das ist jetzt mein Code:
%Vor% %Vor%Meine http-Antwort jetzt:
%Vor%vor der Änderung, habe ich diese Fehlermeldung:
%Vor%und jetzt wie erwartet bekomme ich diesen:
%Vor%Tags und Links java spring spring-mvc spring-security