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?
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!
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:
Zugriffssteuerung Zulassen, dass Origin von nicht zugelassen wird
HttpServletResponseWrapper javadoc - Sie benötigen dies möglicherweise in In diesem Fall müssen Sie das HttpServletResponse-Objekt überschreiben.
Festlegen der Authentifizierungs-Kopfzeile im Servlet über Filter
Unterschiede zwischen ServletResponse und HttpServletResponseWrapper?
Für SOAP-Stuffs sollten die zulässigen Header auch den Nachrichtentyp, soapaction
enthaltenAchten Sie darauf, dass keine Platzhalter die erlaubten Header konfigurieren dürfen ...
Tags und Links jquery jetty authentication http cross-domain