$http verzendt geen cookie in Verzoeken

We werken aan een RESTful Webservice met AngularJS en Java Servlets.
Wanneer de gebruiker inlogt, stuurt onze backend een “Set-Cookie” header naar de frontend. In Angular benaderen we de header via $cookies(ngCookie – module) en stellen deze in.

Nu de gebruiker is ingelogd kan hij bijvoorbeeld wat dingen verwijderen. Daarom stuurt de frontend een GET-verzoek naar de backend. Omdat we op verschillende domeinen werken, moeten we enkele CORS-headers instellen en Angular doet een OPTIONS-verzoek vóór het daadwerkelijke GET-verzoek:

OPTIES-verzoek:

VERZOEK VERZOEK

We doen dit in Angular via de $http-module, maar het verzendt de cookie met JSESSIONIDgewoon niet.

Hoe kan ik Angular inschakelen om cookies te verzenden?


Antwoord 1, autoriteit 100%

In uw configuratie, DI $httpProvideren stel vervolgens withCredentials in op true:

.config(function ($httpProvider) {
    $httpProvider.defaults.withCredentials = true;
    //rest of route code
})

Informatie over angularjs withCredentials: http://docs.angularjs.org/api/ng. $http

Die linkt naar het mozilla-artikel: https://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS?redirectlocale=en-US&redirectslug=HTTP_access_control#section_5


Antwoord 2, autoriteit 8%

$http.get("URL", { withCredentials: true })
  .success(function(data, status, headers, config) {})
  .error(function(data, status, headers, config) {});

Nog iets om in gedachten te houden: u moet cookies van derden hebben ingeschakeld. Als u het globaal hebt uitgeschakeld in Chrome, klikt u op het “i”-symbool links van de domeinnaam, vervolgens op cookies, vervolgens op “geblokkeerd” en deblokkeert u het doeldomein.

Other episodes