2012-12-15 53 views
1

餅乾我domain.comsub1.domain.comsub2.domain.com。從sub1.domain.com的網站,我調用腳本來設置cookie的上domain.com這樣設置/刪除跨子域服務器端和JavaScript

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

但沒有運氣,餅乾仍然存在,價值依然存在。我應該怎麼做才能從子域中刪除root cookie?

編輯:

要清楚:我使用思傑單一登錄到兩個域進行驗證。我們只需登錄.domain.com,檸檬就可以驗證其餘的。但問題是它沒有註銷mechaniz,所以我決定清除cookie。當我用瀏覽器插件清除它時,它工作。但是當它來代碼(JavaScript)它不會工作。有誰知道這

+1

我預見到了2個可能的問題。 1-st是你實際上不能看到這個可用於'domain.com'的cookie,因爲它與域模式不匹配('.domain.com'可以匹配任何'* .domain.com',包括www .domain.com',但不包含沒有子域的'domain.com')。因此,看起來,您第一次從sub1或sub2中檢查cookie,並且第二次從主域中檢查它。第二個可能的問題是你有不同的時間片(即http和https)或端口號(這個問題不清楚)。 – Stan

+0

我用forefox檢查cookies,我發現它......。domain.com是正確的。我不確定http或https影響? –

回答

0

好吧,我知道這個問題!這個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);