在node.js中使用COOKIE


node.js中如何向客戶端發送COOKIE呢?
有如下兩個方案:
一、使用response.writeHead,代碼示例:
//設置過期時間為一分鍾

 1 var today = new Date();
 2 var time = today.getTime() + 60*1000;
 3 var time2 = new Date(time);
 4 var timeObj = time2.toGMTString();
 5 response.writeHead({
 6 'Set-Cookie':'myCookie="type=ninja", "language=javascript";path="/";Expires='+timeObj+';httpOnly=true'
 7 });
 8 
 9 
10 語法如下(具體每個字段的解釋,請看下文的“options字段含義”):
11 Set-Cookie:'
12 cookieName=cookieValue;
13 [expires=]
14 [;domain=]
15 [;path=]
16 [;secure=]
17 [;httpOnly=]
18 '

 

通過查看,COOKIE如下圖所示:


缺點:使用response.writeHead只能發送一次頭部,即只能調用一次,且不能與response.render共存,否則會報錯

 

http://www.cnblogs.com/roucheng

二、使用response.cookie,代碼示例如下:

response.cookie('haha', 'name1=value1&name2=value2', {maxAge:10*1000, path:'/', httpOnly:true});

語法如下:
response.cookie('cookieName', 'name=value[name=value...]',[options]);

options字段含義:
1、expires:指定過期時間,以GMT格式表示的時間字符串,如方法一個的“timeObj”。
2、maxAge:指定過期時間,同expires(expires和maxAge選兩者其一設值即可)。和expires不同之處在於,maxAge值的單位為毫秒(見方法二中的maxAge:10*1000,即為10秒)。maxAge值可以是正數和負數。正數表示當前COOKIE存活的時間。負數表示當前COOKIE只是隨着瀏覽器存儲在客戶端的內存里,只要關閉瀏覽器,此COOKIE就馬上消失。默認值為-1。
3、domain:指定可訪問COOKIE的主機名。主機名是指同一個域名下的不同主機。如:www.hovertree.com和tool.hovertree.com是在兩個不同的主機上,即兩個不同的主機名。默認情況下,一個主機中創建的COOKIE在另一個主機下是不能被訪問,但可以通過domain參數來實現對其的控制,即所謂的跨子域。以hovertree為例,要實現跨主機(跨子域)訪問,寫法如下:domain=.hovertree.com,這樣就實現了所有hovertree.com下的主機都可以訪問此COOKIE。(本機環境上設置此值時,COOKIE無法查看。)
4、path:指定可訪問此COOKIE的目錄。如:path=/default 表示當前COOKIE僅能在 default 目錄下使用。默認值為“/”,即根目錄下的所有目錄皆可以訪問。
5、secure:當設為true時,表示創建的COOKIE會以安全的形式向服務器傳輸,即只能在HTTPS連接中被瀏覽器傳遞到服務器端進行會話驗證;若是HTTP連接則不會傳遞該信息,所以不會被竊取到COOKIE里的具體內容。同理,在客戶端,我們也無法使用document.cookie找到被設置了secure=true的cookie健值對。secure屬性是防止信息在傳遞的過程中被監聽捕獲后信息泄漏,httpOnly屬性的目的是防止程序獲取COOKIE后進行攻擊(XSS)。我們可以把secure=true看成比httpOnly=true是更嚴格的訪問控制。
6、httpOnly:是微軟對COOKIE做的擴展。如果在COOKIE中設置了“httpOnly”屬性,則通過程序(JS腳本、applet等)將無法讀取到COOKIE信息,防止XSS攻擊產生。
通過查看,COOKIE如下圖所示:

http://www.cnblogs.com/roucheng/p/3520056.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM