2013-03-12 63 views
0

我在爲該域的域和子域設置cookie方面遇到困難。雖然我無法透露域名,但我可以將其命名爲「domain.com」並提供代碼。Javascript獲取Cookie問題

我試圖實現以下目標:訪問者訪問domain.com並設置某些Cookie。當他到達subdomain.domain.com上的某個頁面時,必須讀取這些cookie。

如果用戶直接登錄到子域名頁面,cookies將被正確設置並且一切正常,但是如果他登錄到主域名頁面中,則不設置cookie。你可以幫我嗎?

我再次強調,下面的代碼工作時,子域設置的Cookie,但沒有餅乾由主域訪問設置(是的,腳本也在主域網頁以及)。我已經測試過螢火蟲和firecookie。

這是我的代碼上設置的cookie:

function setCookie(c_name,value) { 
    var now = new Date(); 
    var time = now.getTime(); 
    time += 3600 * 1000; 
    now.setTime(time); 
    var c_value=escape(value); 
    document.cookie=c_name + "=" + c_value + '; path=/;domain=.domain.com'; 
} 

而且這是在獲取Cookie值我的代碼:

function getCookie(c_name) { 
    var i,x,y,ARRcookies=document.cookie.split(";"); 
    for (i=0;i<ARRcookies.length;i++) { 
     x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("=")); 
     y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1); 
     x=x.replace(/^\s+|\s+$/g,""); 
     if (x==c_name) { 
      return unescape(y); 
     } 
    } 
} 

回答

0

對我而言,這是一場新秀錯誤。設置的cookie功能在該過程的早期被調用,並且根本沒有設置任何cookie。

感謝Jim Davis,你的堅持讓我更仔細地看待我的代碼。

+0

好吧 - 如果它有什麼不同,那麼你就不會孤單一點。 ; ^) – 2013-03-16 23:52:04

0

你的頂級用戶使用一個子域在所有?即使「www」?

如果不是我認爲(並且誠實地說這是一個猜測),問題可能在於您指定該Cookie在所有子域中有效,但不在頂級域中。嘗試取出前面的「點」。

例如,如果你的用戶點擊「http://domain.com」,那麼我不認爲爲「.domain.com」設置的cookie將被返回。另一方面,如果他們擊中「www.domain.com」,那麼「www」只是另一個子域名,所有這些都應該起作用。

有意義嗎?

+0

那麼最後的頁面只會來自subdomain.domain.com。但問題是,在主域名.com上沒有設置cookie。從互聯網上的所有文獻甚至在這裏在stackoverflow前面的點似乎是強制性的,以便子域可以讀取設置在頂級域的cookie。我錯了嗎? – ovidiua2003 2013-03-12 20:55:43

+0

那麼......主要問題是,你是否嘗試刪除它?據我所知,輸入一個掩碼 - 如果在當前域的末尾發現掩碼,即使不是「壞」,也是「好」。所以 - 如果這是正確的 - 「.domain.com」將匹配「www.domain.com」和「sub.domain.com」,但不是「domain.com」 – 2013-03-13 19:26:41

+0

不,因爲您的解決方案只是部分。 Cookie可能會設置爲頂級域名,但不會被子域名讀取。我對嗎? – ovidiua2003 2013-03-14 07:51:41