在跨子域服务器端和JavaScript上设置/删除Cookie

时间:2012-12-15 09:08:02

标签: javascript asp.net session cookies citrix

我有 domain.com sub1.domain.com sub2.domain.com 。在 sub1.domain.com 的网站上,我调用脚本在 domain.com上设置Cookie ,就像这样

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";

但没有运气,Cookies仍在那里,价值仍然存在。我该怎么做才能从子域删除根cookie?

编辑:

要说清楚:我使用Citrix单点登录在两个域上进行身份验证。我们只需要登录.domain.com,柠檬那将对剩下的进行身份验证。但问题是它没有签署机制,所以我决定清除cookie。当我用浏览器插件清除它时,它工作。但是当它来到代码(javascript)时它将无法工作。有谁知道这个

1 个答案:

答案 0 :(得分:0)

好的,我知道这个问题! Thoese cookie是httponly cookie,这意味着我们无法通过javascript访问。我必须在服务器端修改它们

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