У нас есть веб-сервис, в который пользователи могут входить и выходить. Файл cookie используется для определения того, вошел ли пользователь в систему или нет.
Служба предоставляет несколько «сайтов», каждый из которых идентифицируется субдоменом. Например:
http://customer1.ourservice.com/
http://customer2.ourservice.com/
Есть два способа войти в систему; либо «для всего сервиса», либо «для конкретного сайта».
Запросы на вход для всего сервиса отправляются на специальный поддомен (http://globalauth.ourservice.com/
). Такие запросы на вход приводят к заголовку Set-Cookie
, подобному следующему:
Set-Cookie: OUR-COOKIE=<<cookie-value>>;
expires=Wed, 03 May 2017 11:25:58 GMT;
domain=.ourservice.com;
path=/;
httponly
(Разрывы строк добавлены здесь для облегчения чтения)
Параметр domain=.ourservice.com
делает файл cookie доступным для всех субдоменов.
Запросы на вход для конкретного сайта отправляются на поддомен конкретного сайта. Они приводят к заголовку Set-Cookie
, подобному следующему:
Set-Cookie: OUR-COOKIE=<<cookie-value>>;
expires=Wed, 03 May 2017 11:23:42 GMT;
path=/;
httponly
Запросы на выход всегда отправляются на поддомен конкретного сайта и должны удалять файлы cookie как для «бокового» входа, так и для входа «для конкретного сайта».
Запрос на выход приводит к заголовку Set-Cookie
, подобному следующему:
Set-Cookie: OUR-COOKIE=;
expires=Mon, 02 May 2016 11:26:54 GMT;
path=/;
httponly,
OUR-COOKIE=;
expires=Mon, 02 May 2016 11:26:54 GMT;
domain=.ourservice.com;
path=/;
httponly
Идея здесь заключается в том, что как специфичный для сайта, так и общий файл cookie службы должны быть очищены, и срок их действия истек.
Он работает, когда используется вход «для всей службы», но не работает, когда используется вход для конкретного сайта.
Файл cookie для конкретного сайта просто не удаляется из браузера.
Как мы должным образом проинструктируем браузер об истечении срока действия/удалении файла cookie независимо от того, был ли он выпущен с настройкой domain
или нет?