Подход к хранению куки в Angular и Java - PullRequest
0 голосов
/ 10 октября 2018

Я разрабатываю веб-приложение, используя Angular для на стороне клиента и Java с Spring на на стороне сервера .Я прочитал несколько статей, но не нашел конкретных ответов на мои вопросы.Целью является хранение, чтение и изменение файлов cookie с обеих сторон.Я хочу выяснить удобный и простой подход к хранению и чтению файлов cookie.

Прежде всего , существуют ли передовые практики / соглашения по настройке его на стороне клиента, а затем, если оннужно было читать и изменять с обеих сторон или ...?

Я обнаружил, что на стороне клиента довольно просто использовать ngx-cookie-service .А на стороне сервера все хуже.Я попытался добавить cookie в ответ следующим образом:

@RequestMapping("/")
public String hello(HttpServletResponse response) {
    response.addCookie(new Cookie("foo", "bar"));
    //..        
}

Но он не хранит cookie.

Также с помощью Spring я попытался прочитать уже сохраненный cookie клиентом.сторона, но это также не работает:

@RequestMapping("/")
    public String hello(@CookieValue("myCookie") String cookie){
     log.info("My cookie {}", cookie);
     (...)
}

Ответы [ 2 ]

0 голосов
/ 24 мая 2019

отметьте это: Access-Control-Allow-Credentials

В основном, если ваш сервер имеет этот параметр в заголовке, тогда ваш запрос к серверу также должен иметь свойство withCredentials, установленное вправда

0 голосов
/ 10 октября 2018

На стороне клиента легко с различными пакетами npm, такими как упомянутый вами.

На стороне сервера, вы обычно используете заголовок ответа "Set-Cookie", чтобы установить cookie в браузере.Обычно это делается для аутентификации в ответе конечной точки / api / login, но вы можете использовать его для других целей.

При использовании заголовка ответа Set-Cookie рекомендуется использовать его как HttpOnly, который предотвращает JavaScriptот доступа и вмешательства.Он просто отправляется во всех последующих запросах API, и JavaScript не должен даже беспокоиться об этом.

Это можно использовать на стороне сервера, например, при получении входящего запроса, чтобы определить, кто является аутентифицированным пользователем.А если нет, дайте им 401.

Защищенный означает, что cookie может быть передан только по протоколу HTTPS.

Документы: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie

Не уверен, как вы будете кодироватьJava Spring для установки заголовка ответа Set-Cookie, но я уверен, что вы можете его найти.

Редактировать: response_headers

empty_cookies

...