Это связано с моим другим вопросом, я задаю новый вопрос, поскольку я сузил проблему, и исходный вопрос становился довольно запутанным.
В двух словах, у меня есть 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
Я знаю, что вы не хотите использовать зависимости, если это необходимо, но JS-Cookie - это чрезвычайно легкая, широко протестированная библиотека, совместимая с крестом; он не должен влиять на производительность и может быть именно тем, что вы ищете
Здесь ссылка на репозиторий GitHub.
Ура!
Это было решено путем полного удаления домена!
document.cookie = 'session=xyz; path=/; domain=;";
Надеюсь, это поможет кому-то другому, поскольку это была абсолютная сука для диагностики
РЕДАКТИРОВАТЬ
Таким образом, в жестокой суете судьбы, это действительно исправляет проблему для хрома и firefox, но вы догадались - IE/Edge теперь выбрасывает игрушки из коляски!
я сдаюсь
Используйте библиотеку cookie jQuery вместо доступа к document.cookie напрямую https://plugins.jquery.com/cookie/
Затем просто используйте его как jQuery.cookie('session','xyz',{ path: '/' });