/ / Wyślij plik cookie w żądaniach http z frontendu do backendu za pomocą Angular - angularjs, angular-http, angular-cookies

Wyślij plik cookie w żądaniach http z frontendu do backendu za pomocą Angular - angularjs, angular-http, angular-cookies

Zajmuję się tworzeniem aplikacji internetowych za pomocą AngularJS.

Aplikacja jest realizowana za pomocą:

  • frontend, komponent bez logiki, który po prostu wielokrotnie odpytuje backend, aby otrzymać z niego wszystkie potrzebne dane;
  • backend, zawierający wiele usług RESTful, a każdy z nich zwraca dane do frontendu (jeśli frontend go nazywa).

W moim interfejsie, w głównym kontrolerze, tworzę plik cookie za pomocą $ cookieStore, w ten sposób:

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

Teraz chcę wysłać informacje o tym pliku cookie do ogólnej usługi wewnętrznej, którą nazywam. Na przykład jedno z moich połączeń ma tę postać:

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

Jak mogę wysłać plik cookie? Z góry dziękuję.

Odpowiedzi:

2 dla odpowiedzi № 1

Powinieneś ustawić argument withCredentials widzieć docs

Domyślnie wywołanie odbywa się bezCiasteczka. Ponieważ jest to proste żądanie GET, nie jest ono wstępnie oświetlone, ale przeglądarka odrzuci każdą odpowiedź, która nie ma hasła Access-Control-Allow-Credentials: true, i nie udostępni odpowiedzi dla wywołującej treści WWW.

Zakładam, że uruchamiasz skrypt w tej samej domenie serwera, ponieważ

Ponieważ tylko JavaScript działa w Twojej domeniepotrafił odczytać ciasteczko, twój serwer może być pewny, że XHR pochodzi z JavaScriptu działającego w twojej domenie. Nagłówek nie zostanie ustawiony dla żądań między domenami.


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

lub możesz użyć metody kątowego postu skrótów:

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

POST metoda wyśle ​​pliki cookie do zaplecza. W backendach możesz użyć JSON.parse(req.cookies) zdobyć pliki cookie.