AngularJS $http POST withCredentials schlägt mit Daten im request-body

AngularJS authentifiziert der server-Seite, die Verwendung von REST und bekommt das JSESSIONID-cookie.
Im nächsten Schritt versuche ich, einige zu bekommen, JSON-Daten vom server-Seite, die Verwendung von REST zusammen mit dem session-cookie, gesammelt in der vorherigen Schritt. Hier ist der client-seitige code:

getSomeJSONDataFromServer:function() {
var deferred = $q.defer();
$http({
    method: 'POST',
    withCredentials: true,
    url: "http://domain.name/app/someURL",
    headers:{
        'Accept':'application/json',
        'Content-Type':'application/json; charset=utf-8',
        'Access-Control-Request-Headers': 'X-Requested-With, content-type, accept, origin, withcredentials'
    }
})
.success(function(data, status, headers, config) {
    //handle data
})
.error(function(data, status, headers, config) {
    //handle error
});
return deferred.promise;
}

Den code oben funktioniert OK:

AngularJS $http POST withCredentials schlägt mit Daten im request-body

Die Probleme beginnen, wenn ich senden einige Daten in der oben genannten POST-request-body.

...
$http({
    method: 'POST',
    withCredentials: true,
    url: "http://domain.name/app/someURL",
    headers:{
        'Accept':'application/json',
        'Content-Type':'application/json; charset=utf-8',
        'Access-Control-Request-Headers': 'X-Requested-With, content-type, accept, origin, withcredentials'
    },
    data: '{}'
})
.success(...

Den obigen code nicht in die prelight Anfrage:

AngularJS $http POST withCredentials schlägt mit Daten im request-body

Sieht aus wie der server eine neue Sitzung startet, weil der session-cookie nicht gesendet wird, aus irgendeinem Grund. Wie auch immer, ich fühle mich wie ich bin etwas fehlt wirklich einfach, einige header oder sowas in der Art...
Alle Ideen sind willkommen. Vielen Dank im Voraus.

  • Es scheint ein Problem von Cross-Domain-Aufruf. AJAX-Aufrufe nur zu senden Cookies, wenn Sie die url, die Sie aufrufen ist die die auf der gleichen Domäne wie der aufrufende Skript.
  • Ja, definitiv ist es ein CORS nennen. Und es funktioniert, bis Sie das hinzufügen Körper, um die Anfrage...
InformationsquelleAutor Amir Jamak | 2014-03-13
Schreibe einen Kommentar