У меня возникли проблемы с файлом cookie для идентификатора сеанса, возвращаемого Express в браузер. Для последовательных запросов полученный файл cookie не передается обратно, поэтому для каждого запроса создается новый сеанс. Состояние входа не может быть сохранено.
Эта проблема возникает только в IE11 и ниже в ОС ниже Win10 или около того (например, IE11 в Win7). Edge, Chrome, Safari, FF... без проблем.
Еще немного контекста: у нас есть два приложения, скажем, one.example.com и two.example.com. С запросами от обоих приложений следует отслеживать вошедшего в систему пользователя. Стек MEAN, доступный на two.example.com, возвращает заголовки set-cookie за один день, только HTTP, с доменом '.example.com' по пути '/'.
Когда я загружаю страницу, скажем, с 10 ресурсами, все эти запросы получают новый файл cookie для идентификатора сеанса. Даже при последовательных загрузках страниц. Файл cookie никогда не возвращается обратно на сервер.
Трассировка HTTP из Chrome:
GET http://localhost:3000/
HTTP/1.1 200 OK
set-cookie: test=123
set-cookie: webSessionId=s%3Av6R-...
GET http://localhost:3000/lib/bootstrap/dist/css/bootstrap.css
Cookie: test=123; webSessionId=s%3Av6R-...
HTTP/1.1 200 OK
Set-Cookie: test=123
видно, что Chrome возвращает сеанс, он не возвращается экспрессом для второго запроса
Трассировка HTTP из IE: ответ для первого запрошенного ресурса < em>запрос второго ресурса ответ для второго запрошенного ресурса
test123 — это жестко закодированный файл cookie, который я устанавливаю при каждом запросе (независимо от того, был ли он возвращен)... с помощью res.setHeader('Set-Cookie', 'test=123');
. В какой-то момент я смотрел на разницу между «set-cookie» и «Set-Cookie» (как видно на снимках экрана выше), но это, похоже, не влияет на IE.
Поэтому я начал играть с другими свойствами файлов cookie (дата истечения срока действия, домен, путь, безопасность и только http), как только я предоставляю домен... тестовый файл cookie не возвращается IE. В нашей настройке «.example.com» действительно является обязательным требованием. Домен не содержит знака подчеркивания (_). В dev и tst он содержит дефис «two-dev.example.com». Но проблема с IE(11) существует и на prd (two.example.com).
Кто-нибудь знает, почему IE отказывается возвращать файлы cookie с доменом? Это дерьмо сводит меня с ума
используя: экспресс 4.13.1; экспресс-сессия 1.11.3; куки-парсер 1.3.2