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 JSESSIONID
gewoon niet.
Hoe kan ik Angular inschakelen om cookies te verzenden?
Antwoord 1, autoriteit 100%
In uw configuratie, DI $httpProvider
en 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.