2014-07-21 69 views
0

我現在瘋了,我一直在花費一天的時間去應付一無所獲。作爲第三方閱讀我自己的域名cookie

我做

var cookie = req.cookies.my_user; 
    if(!cookie){ 
     console.log("not user"); 
     res.cookie('my_user', user._id, {maxAge: 900000, httpOnly: false }); 
    } 

我運行的網站爲localhost我compoundjs網站以下(在服務器上):3000

當我從一些頁面運行下面的書籤我不控制

var link = document.createElement("link"); 
link.type = "text/css"; 
link.rel = "stylesheet"; 
link.href = "//localhost:3000/bookmarklet/bookmarklet.css"; 
var head = document.getElementsByTagName("head"); 
head[0].appendChild(link); 
var script = document.createElement('script'); 
script.src = "//localhost:3000/bookmarklet/bookmarklet.js"; 
head[0].appendChild(script); 

和bookmarklet.js裏面我做

console.log(document.cookie); 

我沒有設置cookie。

很明顯,我應該訪問,因爲腳本是從我設置cookie的同一個域中提供的。

我去看看從該頁面提供的實際HTML文檔,並打開控制檯,並做console.log(document.cookie)我看到我的cookie,但不是如果我執行JavaScript內寫入到文件。

換句話說,它表現得好像它是我設置的會話cookie,儘管它不應該如我所瞭解的那樣。

+0

當我在其他站點上的腳本中查看document.cookies時,它會顯示以下內容:CFID = 141701010; CFTOKEN = 5599abd5d67ae4a4-7C095B6D-9CD9-D5A9-300B140A02F494F9; __qca = P0-285957599-1404239672015; __utma = 1.1407759513.1404239672.1405887047.1405948443.68; __utmz = 1.1404239672.1.1.utmcsr =(直接)| utmccn =(直接)| utmcmd =(無); 。__utmv = 1 | 1 =用戶%20Type =非成員= 1; _cb_ls = 1; _chartbeat2 = BL1dzWBm0jTrC6undF.1403386051352.1405951394845.1111100011111111; _chartbeat_uuniq = 3; __utmb = 1.4.10.1405948443; __utmc = 1 – user254694

+0

當我查看我的網站上的文檔cookie時,它顯示session = s%3Amy_user%3D53cad14d351ac8941752a278.fxNTCK5j3%2BMs0y3O%2FEons%2F9RaTY%2FY5HaPuXMw9ZhzEE; my_user = j%3A%2253cad14d351ac8941752a278%22 – user254694

+0

chartbeat當然是一個由chartbeat設置的cookie,但據我所知在我們的node.js站點中沒有使用它,但爲什麼我應該能夠將它作爲document.cookie通過localhost提供的腳本訪問:3000 – user254694

回答

0

我想你設置cookie一定是有問題的方式......我建議你使用Cookie libraries just like this one(如果你已經使用jQuery),這樣就可以這樣設置的cookie:

$.setCookie("key","value",7); // expires in one week 
Cookie = $.getCookie("key"); // it gets you cookie 
$.removeCookie("key"); // to remove your cookie 

和你有很多其他選擇做餅乾一樣獲得所有的cookies或清除所有的cookies等等...

+0

不,Cookie正在服務器上設置。我編輯了我的問題,以便在看到您的回覆以清除混淆之後反映出來。 – user254694

0

很顯然,我應該有機會,因爲腳本是從同一個域提供服務我的cookie正在設置中。

也許不是那麼明顯。腳本使用它們加載的頁面的權限運行,而不是從它們加載的位置運行。也就是說,腳本所服務的域是無關緊要的 - 唯一重要的位置就是瀏覽器地址欄(或名稱地址欄,如果是框架)。