2011-04-18 75 views
0

說的問題我有兩個應用程序,www.test.comsub.test.com在sub.test.com,現在,我創建了一個窗口加載www.test.com與像代碼:關於window.open和餅乾

window.open('www.test.com'); 

所以窗口彈出剛剛和負載www.test.com成功。
後來我設置一個cookie在sub.test.com,說「UNAME = wong2;域= .test.com」,我已經學會了與設置爲domain=.test.com,所有站點,域test.com(如www.test.com,aaa.test.com,test.com)可以讀取cookie。

但是,當我嘗試從剛剛彈出的窗口加載cookie時,它無法獲取它。

後來我發現,如果我不使用window.open而是直接開www.test.com瀏覽器,它的工作原理。

那麼window.opencookie有一些限制嗎?

+0

不,我已經聽說過。你是否也設置了「/」的路徑?您是否使用相同的端口號和協議(http/https) – mplungjan 2011-04-18 12:29:34

+0

在哪個瀏覽器中發生此問題? – JAAulde 2011-04-18 12:35:26

+0

@mplungjan是.. – wong2 2011-04-18 12:36:59

回答

0

只是檢查你如何設置Cookie:

var domain = 'test.com'; 
var expires = (function(days){ 
    date = new Date(); 
    date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); 
    return date.toUTCString(); 
})(5); 
var name = 'myCookie'; 
var path = '/'; 
var value = 'foo';  

document.cookie = name + "=" + encodeURIComponent(value) + "; expires=" + expires + "; path='" + path + "'; domain=" + domain + ";"; 
+0

您可能也想要編碼您的值,編輯過的樣本 – ezmilhouse 2011-04-18 12:52:34

+0

也設置了路徑旁邊的parenths,編輯過 – ezmilhouse 2011-04-18 12:57:33

0

這就是所謂的跨域,你不能在一個域中設置cookie,並嘗試訪問不同域中的cookie。瀏覽器不會允許這樣做。 我認爲你可以使用iframe或相同的來源策略來完成此操作,或嘗試使用document.domain我不確定你想要做什麼。

+0

我已經使用'域= .test.com'解決這個問題 – wong2 2011-04-18 12:46:46

+0

Cookie可以跨域如果設置不當允許它。 – JAAulde 2011-04-18 13:50:24