Проблема с файлами cookie NodeJS и Express в IE

У меня возникли проблемы с файлом 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


person Tom    schedule 17.01.2017    source источник


Ответы (1)


Я думаю, что нашел причину... домены, которые мы используем, являются двухбуквенными доменами, например. one.xx.yy и two.xx.yy. Таким образом, установка доменной части файла cookie на .xx.yy приводит к тому, что IE игнорирует файл cookie, как я понимаю.

Кто-нибудь может подтвердить, что эта проблема все еще актуальна для IE11?

Как установить файлы cookie для двухбуквенных доменов в IE8?

И/или как это обойти? Помимо очевидного использования других доменов.

person Tom    schedule 18.01.2017