JavaScript Cookie абсолютно отказывается от удаления

1

Это связано с моим другим вопросом, я задаю новый вопрос, поскольку я сузил проблему, и исходный вопрос становился довольно запутанным.

В двух словах, у меня есть cookie, который отказывается быть удаленным!

Мой сервер устанавливает cookie " session = abc; domain = example.com; path =/; "

Я хочу отредактировать эту клиентскую часть cookie, так что скажу, что я хочу изменить abc на xyz, тогда я запускаю следующий код

document.cookie = "session=xyz; domain=example.com; path=/;"

Теперь, когда я проверяю файлы cookie, на самом деле у меня есть следующие два файла cookie (обратите внимание на ведущую точку):

"session=abc; domain=example.com; path=/;"
"session=xyz; domain=.example.com; path=/;"

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

Однако это:

document.cookie = 'session=; expires=Thu, 01 Jan 1970 00:00:01 GMT;';

и это:

document.cookie = 'session=; expires=Thu, 01 Jan 1970 00:00:01 GMT; path=/; domain=example.com;';

Оба абсолютно ничего не делают

Как, на самом деле, я должен удалить cookie, когда я даже не могу допустить совпадение доменов?

NB

При написании этого вопроса все усложнилось! Я только что заметил, что описанное выше поведение происходит только на определенной странице, если я пытаюсь удалить файл cookie сервера с другой страницы, он исчезает без суеты

Чтобы добавить оскорбление к травме Это действительно работает, как и ожидалось в IE/Edge

  • 2
    Brainfuck - это название языка программирования. Убрал тег.
  • 1
    Я знаю, что вы не хотите использовать библиотеку без крайней необходимости, но, возможно, просмотр JS-Cookie поможет вам в этом: github.com/js-cookie/js-cookie
Показать ещё 2 комментария
Теги:
cookies
hapijs
session-cookies

3 ответа

1
Лучший ответ

Я знаю, что вы не хотите использовать зависимости, если это необходимо, но JS-Cookie - это чрезвычайно легкая, широко протестированная библиотека, совместимая с крестом; он не должен влиять на производительность и может быть именно тем, что вы ищете

Здесь ссылка на репозиторий GitHub.

Ура!

0

Это было решено путем полного удаления домена!

document.cookie = 'session=xyz; path=/; domain=;";

Надеюсь, это поможет кому-то другому, поскольку это была абсолютная сука для диагностики

РЕДАКТИРОВАТЬ

Таким образом, в жестокой суете судьбы, это действительно исправляет проблему для хрома и firefox, но вы догадались - IE/Edge теперь выбрасывает игрушки из коляски!

я сдаюсь

0

Используйте библиотеку cookie jQuery вместо доступа к document.cookie напрямую https://plugins.jquery.com/cookie/

Затем просто используйте его как jQuery.cookie('session','xyz',{ path: '/' });

  • 0
    Не все используют JQuery.
  • 0
    Подожди, ваааат? Использование JavaScript не является хорошей практикой по сравнению со сторонними библиотеками? Извините, но это не только ответ, но и очень плохая перспектива использования внешних библиотек.
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню