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ď č. 1Mali 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.