/ / Odoslanie súboru cookie v žiadostiach http z frontend na backend s Angular - angularjs, angular-http, angular cookies

Odošlite súbor cookie v žiadostiach http z frontend na backend s Angular - angularjs, angular-http, angular cookies

Vyvíjam webovú aplikáciu pomocou aplikácie AngularJS.

Aplikácia je realizovaná s:

  • rozhranie, komponent bez logiky, ktorý jednoducho často spochybňuje backend, aby získal od neho všetky potrebné dáta;
  • backend, obsahujúci veľa služieb RESTful a každý z nich vráti dáta na frontend (ak ho frontend volá).

Na mojom fronte, v hlavnom ovládači, vytvorím cookie pomocou $ cookieStore, týmto spôsobom:

// Setting sessionID in the cookie
$cookieStore.put("sessionID", $scope.contextData.sessionId);

Teraz chcem odoslať informácie o tomto súbore cookie generickej službe backend, ktorú volám. Napríklad jeden z mojich volaní má tento formulár:

$http({
method: "GET",
url: urlBase + "/context/person"
}).success(function(result, status, headers, config) {
$scope.currentPerson = result;
});

Ako môžem odoslať cookie? Vopred ďakujem.

odpovede:

2 pre odpoveď č. 1

Mali by ste nastaviť argument withCredentials vidieť docs

V predvolenom nastavení sa vyvolanie uskutoční bezCookies. Vzhľadom na to, že ide o jednoduchú požiadavku GET, nie je predvolená, ale prehliadač odmietne akúkoľvek odpoveď, ktorá nemá prístupový riadok-povolenie-poverenia: pravá hlavička a nevyžaduje odpoveď k vyvolaniu webového obsahu.

Predpokladám, že skript používate v rovnakej doméne servera, pretože

Vzhľadom k tomu, že len JavaScript, ktorý beží vo vašej doméneby mohol čítať súbor cookie, váš server si môže byť istí, že XHR pochádza z JavaScriptu bežiaceho vo vašej doméne. Hlavička nebude nastavená pre žiadosti medzi doménami.


0 pre odpoveď č. 2
$http({
method: "POST",
url: urlBase + "/context/person"
}).success(function(result, status, headers, config) {
$scope.currentPerson = result;
});

alebo môžete použiť metódu skrátených príspevkov:

$http.post("/someUrl", data, config).then(successCallback, errorCallback);

POST metóda pošle súbory cookie na backend. V backende môžete použiť JSON.parse(req.cookies) pre získanie súborov cookie.