Установка/удаление файлов cookie на стороне сервера между субдоменами и JavaScript

У меня есть domain.com, sub1.domain.com и sub2.domain.com. С сайта sub1.domain.com я вызываю скрипт для установки файла cookie на domain.com следующим образом.

document.cookie = "KEY=Value; domain=.domain.com; path=/; expires=Thu, 01 Jan 2013 00:00:01 GMT";

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

document.cookie = "KEY=Deleted; domain=.domain.com; path=/; expires=Thu, 01 Jan 1990 00:00:01 GMT";

Но не повезло, куки все еще там, ценность остается. Что мне делать, чтобы удалить корневой файл cookie из поддомена?

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

Чтобы было ясно: я использую единый вход citrix для аутентификации в обоих доменах. нам просто нужно войти в .domain.com, а Citric проверит подлинность остальных. Но проблема в том, что у него нет механизма выхода, поэтому я решил очистить куки. Он работает, когда я очищаю его с помощью плагинов браузера. Но когда дело доходит до кода (javascript), это не сработает. Кто-нибудь знает это


person Trinh Hoang Nhu    schedule 15.12.2012    source источник
comment
Предвижу 2 возможные проблемы. Во-первых, вы не можете увидеть этот файл cookie доступным для domain.com, потому что он не соответствует шаблону домена (.domain.com может соответствовать любому *.domain.com, включая www.domain.com, но не domain.com без субдоменов). Таким образом, кажется, что в первый раз вы проверили cookie из sub1 или sub2, а во второй раз вы проверили его из основного домена. Вторая возможная проблема заключается в том, что у вас разные схемы (т.е. http и https) или номера портов (из вопроса непонятно).   -  person Stan    schedule 15.12.2012
comment
Я проверяю файлы cookie с помощью forfox и вижу это... .domain.com правильно. Я не уверен, что http или https влияют?   -  person Trinh Hoang Nhu    schedule 15.12.2012


Ответы (1)


Хорошо, я знаю проблему! Эти файлы cookie являются http-only файлами cookie, что означает, что мы не можем получить доступ через javascript. Я должен изменить их на стороне сервера

HttpCookie expiredCookie = new HttpCookie("CookieName");
expiredCookie.Expires = DateTime.UtcNow.AddDays(-1);
expiredCookie.Path = "/";
expiredCookie.Domain = ".domain.com";
Response.Cookies.Add(expiredCookie);
person Trinh Hoang Nhu    schedule 16.12.2012