jquery domainübergreifende Authentifizierung

8

Ich konfiguriere meinen Jetty-Server, um domänenübergreifende HTTP-Anfragen zuzulassen (allowedOrigins = *) und erlaube auch die domänenübergreifende Authentifizierung (allowCredentials = true) mit seinem CrossOriginFilter. Cross-Domain-HTTP-Anfragen ohne Authentifizierungspflicht funktionieren einwandfrei. Wenn es um HTTP-Aufrufe geht, die eine Authentifizierung erfordern, funktioniert das mit JQuery nicht. Ich benutze den folgenden Code und folgte diesem Beispiel: Ссылка

%Vor%

In HTTPFox sehe ich folgende Anfrage an den Server:

%Vor%

Der Server antwortet mit einem

%Vor%

Ich habe auch die folgenden Optionen verwendet, die keinen Unterschied machen.

%Vor%

Die Fehlerfunktion wird immer ausgelöst. Jemand eine Idee, was das Problem sein könnte?

    
hansi 26.05.2012, 21:08
quelle

3 Antworten

5

Die standardmäßig zulässigen Header sind

  

X-Requested-With, Inhaltstyp, Accept, Origin

Ich musste die Header hinzufügen

  

Autorisierung, Inhaltstyp

Dies wurde über die Protokolldatei gefunden

  

DEBUG [2012-05-27 17: 04: 02,468] org.eclipse.jetty.servlets.CrossOriginFilter: Header [Autorisierung, Inhaltstyp] gehören nicht zu den erlaubten Headern [X-Requested-With, Content-Type, Akzeptieren, Origin]

Danke für alle Hinweise!

    
hansi 27.05.2012, 17:16
quelle
3

Die Antwortheader, die Sie in Ihrer Anwendung festgelegt haben - wenn die Sicherheit nicht aktiviert ist, funktioniert 00 einwandfrei, wie Sie bestätigt haben. Wenn die Sicherheit aktiviert ist, schlagen Ihre domänenübergreifenden Anforderungen jedoch fehl.

Dies ist wahrscheinlich auf die zusätzlichen Filter- und zusätzlichen Antwortheader zurückzuführen, die vom Sicherheitsfilter festgelegt werden, um eine Antwort zu generieren.

Um dieses Problem zu lösen, müssen Sie vor der Zeit, zu der der Sicherheitsfilter seine Antwortheader setzt und / oder sie an den Client bindet, Ihre Antwortheader festlegen. p>

Sie verwenden auch Jetty; Daher können Sie den Filterknoten-Origin-Filter verwenden, um sicherzustellen, dass die Antwort-Header in der Filterkette in festgelegt sind die Reihenfolge, in der sie festgelegt werden müssen:

Hier ist eine Liste von Parametern, die Sie in der Filterkonfiguration in web.xml übergeben können:

  
  • allowedOrigins, eine durch Kommas getrennte Liste von Ursprüngen, die auf die Ressourcen zugreifen dürfen. Der Standardwert ist *, dh alle Ursprünge

  •   
  • allowedMethods, eine durch Kommas getrennte Liste von HTTP-Methoden, die beim Zugriff auf die Ressourcen verwendet werden dürfen. Der Standardwert ist GET, POST

  •   
  • allowedHeaders, eine durch Kommas getrennte Liste von HTTP-Headern, die beim Zugriff auf die Ressourcen angegeben werden dürfen. Der Standardwert ist X-Requested-With

  •   
  • preflightMaxAge, die Anzahl der Sekunden, für die Preflight-Anforderungen vom Client zwischengespeichert werden können. Der Standardwert ist 1800 Sekunden oder 30 Minuten

  •   
  • allowCredentials, ein boolescher Wert, der angibt, ob die Ressource Anforderungen mit Anmeldeinformationen zulässt. Der Standardwert ist false

  •   

Standardmäßig ist der Antwortkopf für Zugelassene Ursprünge auf * festgelegt, was bedeutet, dass jede Anforderung von jeder Domäne aus erfolgen kann. Sie müssen sicherstellen, dass Sie dies ändern, um nur Domains zuzulassen, die Sie auf die weiße Liste setzen möchten, vorausgesetzt, Sie möchten nicht, dass jede Anfrage von allen Domains gültig ist:

web.xml-Eintrag für den Filter:

%Vor%

Hier ist eine Liste von zusätzlichen Ressourcen, die Sie bei der Lösung dieses speziellen Problems hilfreich finden können:

jmort253 26.05.2012 22:35
quelle
0

Für SOAP-Stuffs sollten die zulässigen Header auch den Nachrichtentyp, soapaction

enthalten

Achten Sie darauf, dass keine Platzhalter die erlaubten Header konfigurieren dürfen ...

    
user1050755 11.07.2012 16:22
quelle