nodejs操作cookie的流程


cookie可以記錄用戶操作狀態,在服務器端也可以操作cookie,這也是session會話控制的依據點。

1.獲取cookie

通過req.headers.cookie拿到cookie字符串:

var http = require('http'); http.createServer(function (req, res) { // 獲得客戶端的Cookie var Cookies = {}; req.headers.cookie && req.headers.cookie.split(';').forEach(function( Cookie ) { var parts = Cookie.split('='); Cookies[ parts[ 0 ].trim() ] = ( parts[ 1 ] || '' ).trim(); }); console.log(Cookies) res.end('Hello World\n'); }).listen(8000); 

2.設置cookie

基礎設置:

res.writeHead(200, {
        'Set-Cookie': 'myCookie=test',
        'Content-Type': 'text/plain'
});

多組設置:

res.writeHead(200, {
     'Set-Cookie': ["aaa=bbb","ccc=ddd","eee=fff"],
     'Content-Type': 'text/plain'
 });

但真正使用時,我們的Cookie並非這樣簡單的的格式,需要設置過期時間等等:

res.writeHead(200, {
        'Set-Cookie': 'myCookie=test; Expires=Wed, 13-Jan-2021 22:23:01 GMT;HttpOnly ',
        'Content-Type': 'text/html'
});
  • HttpOnly 屬性: 這是微軟對Cookie做的擴展。如果在Cookie中設置了"HttpOnly"屬性,那么通過程序(JS腳本、Applet等)將無法讀取到Cookie信息,這樣能有效的防止XSS攻擊。
  • Expires屬性:指定過期時間,格式為"name=value;; expires=GMT_String";其中GMT_String是以GMT格式表示的時間字符串,超過這個時間,Cookie將消失,不可訪問。
  • Secure屬性: 當設置為true時,表示創建的 Cookie 會被以安全的形式向服務器傳輸,也就是只能在 HTTPS 連接中被瀏覽器傳遞到服務器端進行會話驗證,如果是 HTTP 連接則不會傳遞該信息,所以不會被竊取到Cookie 的具體內容。同上,在客戶端我們也無法在document.Cookie找到被設置了Secure=trueCookie鍵值對。Secure屬性是防止信息在傳遞的過程中被監聽捕獲后信息泄漏,HttpOnly屬性的目的是防止程序獲取Cookie后進行攻擊。我們可以把Secure=true看成比HttpOnly更嚴格的訪問控制。
  • path屬性: 指定可訪問Cookie的目錄。例如:"userId=320; path=/shop";就表示當前Cookie僅能在shop目錄下使用。





免責聲明!

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



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