JQuery CORS und Leitet
Mithilfe Von JQuery 1.8.2
Ich mache einen CORS-request zu einer app von einem Anwendungsserver (Vor) zu einem anderen Anwendungsserver (Zurück) server. Wenn ich den folgenden Ajax-Aufrufe aus Vor, die Antwort 302 (security check) von Zurück wird geehrt, aber mein JSESSIONID-cookie wird nicht gespeichert:
$.ajax({
url : url,
dataType : 'html',
success : function(data, status, xhr) {
$(dataContainer).append(data);
},
complete: function(xhr, status, error) {
if (xhr.status != 200) {
$.logger(xhr.getResponseHeader('Location'));
}
}
});
Nun, wenn ich den gleichen Anruf, aber fügen Sie in der withCredentials, meine JSESSIONID wird korrekt gespeichert, aber die 302-Weiterleitung ist gelöscht wird. Chrome & Firefox (neueste Versionen von beiden) einfach nicht mehr die Verarbeitung der Anfrage.
$.ajax({
xhrFields: { withCredentials: true },
url : url,
dataType : 'html',
success : function(data, status, xhr) {
$(dataContainer).append(data);
},
complete: function(xhr, status, error) {
if (xhr.status != 200) {
$.logger(xhr.getResponseHeader('Location'));
}
}
});
Ich versucht, um die redirect-location-header aus der xhr-Objekt, aber es ist leer.
Ich bin Einstellung, die im folgenden auf alle Antworten kommen aus Zurück:
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "GET,POST,OPTIONS");
response.setHeader("Access-Control-Max-Age", "1728000");
response.setHeader("Access-Control-Allow-Headers", "Cookie,X-Requested-With");
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setHeader("Access-Control-Expose-Headers", "Location");
Natürlich werde ich Grenze den Ursprung, wenn/falls ich es bekommen kann, zu arbeiten.
Weiß jemand, was nötig ist, um das arbeiten mit JQuery? Ist es ein JQuery Problem, oder man erlebt mit allen Ajax+CORS-Anfragen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie nicht verwenden
Access-Control-Allow-Origin: *
in Verbindung mitAccess-Control-Allow-Credentials: true
. Wenn die Access-Control-Allow-Credentials auf true gesetzt ist, wird der Wert von Access-Control-Allow-Origin " muss der Wert des Origin-header:Alternativ können Sie die drop
Access-Control-Allow-Credentials: true
header (zusammen mit derwithCredentials = true
JS-code).Versuchen Sie crossDomain in der ajax-Einstellungen.
Verwenden auch
vor dem Aufruf von $.ajax.
In der Firebug->Net>Register "Alle" sehen Sie eine GET-Anforderung oder einer OPTIONS-Anfrage?