cookie, отправленный сервером, не перекрывает существующий cookie - PullRequest
0 голосов
/ 04 января 2019

У меня есть приложение express и я использую модуль cookie-session для управления сессиями.Приложение имеет 2 пути https://example.com/abc/def и https://example.com/abc/ghi.если я сначала захожу на какой-либо путь, то он устанавливает cookie, но если я меняю URL на другой путь, то я вижу, что сервер отвечает новым значением для cookie в консоли разработчика, но он не обновляется в браузере.Есть идеи, что мешает обновлению файлов cookie?

Ответы [ 2 ]

0 голосов
/ 07 января 2019

при дальнейшем анализе я обнаружил, что длина содержимого cookie превышает допустимый размер в 4096 байт, после того как мы исправили содержимое, мы видим, что cookie правильно установлен.

0 голосов
/ 04 января 2019

Вам нужно очистить Cookie, прежде чем устанавливать новый.Самое главное, куки работают с доменом, а не с путями.Таким образом, в пути, где вы хотите установить cookie, вы должны проверить наличие существующего cookie, и если вы нашли его, вы должны удалить его, чтобы установить новый.

const cookieSession = require('cookie-session');
const express = require('express');
const app = express();

app.set('trust proxy', 1) // trust first proxy

app.use(cookieSession({
   name: 'session',
   keys: ['key1', 'key2']
}));

app.get('/abc', function(req, res, next) {
  req.session = {
     'views':'abc'
  };
  res.end(req.session.views + ' cookie value is set');
 });


app.get('/xyz', function(req, res, next) {
  req.session = {
    'views':'xyz'
  };
  res.end(req.session.views + ' cookie value is set');
});

app.get('/test', function(req, res, next) {
   res.end(req.session.views + ' cookie found');
});

app.listen(3000);

Это пример кода, где путь /abc и /xyz устанавливает различные значения для сеанса, и эти значения можно увидеть на пути /test.

Так что, если вы сначала нажмете на /abc route, а затем на /test path, вы получите значение cookie {'views': 'abc'} и если вы нажмете /xyz, а затем нажмите /test значение cookie будет {'viewa':'xyz'};

...