Мое веб-приложение создано таким образом, что, когда пользователь регистрируется на сервере, добавляется заголовок Set-Cookie для ответа, например:
Set-Cookie:JSESSIONID=1; Path=/myApp/; Secure
При выходе из системы я пытаюсь удалить этот файл cookie на клиенте (браузере), так как мне все равно, если сеанс был успешно уничтожен на сервере, пока файл cookie будет удален. Любые затяжные сеансы "призрак" время от времени будут очищаться на сервере.
Однако мое приложение не может удалить cookie JSESSIONID. Скажем, функция выхода была вызвана из https://test.myserver.com/myApp/app/index.html#/mySubPage
, а функция выхода из системы:
delete $cookies["JSESSIONID"];
$location.path("/login");
Файл cookie не удаляется. Обновление списка файлов cookie на вкладке "Ресурсы" в Инструментах разработчика Chrome покажет, что оно все еще существует. Перезагрузка страницы входа и обновление списка файлов cookie на вкладке "Ресурсы" по-прежнему показывает файл cookie.
Почему я не могу удалить cookie из моего Javascript-клиента, если он не является HTTPOnly cookie? Это путь, который вызывает проблемы? Не должно быть, поскольку script работает на странице, включенной в путь к файлу cookie. Куки файлы на самом деле не так уж трудны, чтобы нормально справляться, поэтому я хорошо знаю, что может быть что-то тривиальное, что я здесь не замечаю, - но любая помощь была бы очень оценена.
UPDATE:
В моем оригинальном посте я указал неверный путь к моему приложению. Теперь он отредактирован, чтобы отразить правильный путь (ну, абстрактно). Оказывается, это была важная информация для вопроса. AngularJS использует полный относительный путь приложения как атрибут пути для всех файлов cookie, которые он создает/удаляет, поэтому, поскольку наш сервер установил куки файл с помощью пути /myApp/
, и приложение было запущено на относительном пути /myApp/app
, Angular пытался удалить прежний файл cookie, которого не существует (чтобы перезаписать или удалить существующий файл cookie, имя, домен и путь все должны быть идентичны тем, которые используются при создании файла cookie).