Spring Security, REST-Standardauthentifizierungsproblem

8

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%     
raonirenosto 17.05.2013, 20:07
quelle

1 Antwort

11

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%     
raonirenosto 20.05.2013, 20:16
quelle