express框架中cookie的使用


Set-cookie:name=name;expires=date;path=path;domain=domain
支持cookie的瀏覽器都會對此作出反應,即創建cookie文件並保存(也可能是內存cookie),用戶以后在每次發出請求時,瀏覽器都要判斷當前所有的cookie中有沒有沒失效(根據expires屬性判斷)並且匹配了path屬性的cookie信息,如果有的話,會以下面的形式加入到請求頭中發回服務端:

Cookie: name="zj"; Path="/linkage"

服務端的動態腳本會對其進行分析,並做出相應的處理,當然也可以選擇直接忽略。

這里牽扯到一個規范(或協議)與實現的問題,簡單來講就是規范規定了做成什么樣子,那么實現就必須依據規范來做,這樣才能互相兼容,但是各個實現所使用的方式卻不受約束,也可以在實現了規范的基礎上超出規范,這就稱之為擴展了。無論哪種瀏覽器,只要想提供cookie的功能,那就必須依照相應的RFC規范來實現。所以這里服務器只管發Set-cookie頭域,這也是HTTP協議無狀態性的一種體現。

需要注意的是,出於安全性的考慮,cookie可以被瀏覽器禁用。

 

 

name: 類型為String 
value: 類型為String和Object,如果是Object會在cookie.serialize()之前自動調用JSON.stringify對其進行處理 
Option: 類型為對象,可使用的屬性如下 
domain:cookie在什么域名下有效,類型為String,。默認為網站域名 
expires: cookie過期時間,類型為Date。如果沒有設置或者設置為0,那么該cookie只在這個這個session有效,即關閉瀏覽器后,這個cookie會被瀏覽器刪除。 
httpOnly: 只能被web server訪問,類型Boolean,禁止客戶端JavaScript的訪問,禁止后不能使用document.cookie。 
maxAge: 實現expires的功能,設置cookie過期的時間,類型為String,指明從現在開始,多少毫秒以后,cookie到期。 
path: cookie在什么路徑下有效,默認為’/’,類型為String 
secure:只能被HTTPS使用,類型Boolean,默認為false 
signed:使用簽名,類型Boolean,默認為false。express會使用req.secret來完成簽名,需要cookie-parser配合使用

設置cookie

var express=require('express');
var cookie=require('cookie-parser'); 
var app=express();


app.use(cookie());

app.get('/',function(req,res){

   if(req.cookies.user){
       res.send('歡迎在次登錄')
   }
    else{
       res.cookie('user',1,{ expires: new Date(Date.now() + 100), httpOnly: true });
       res.send('歡迎新用戶登錄')
   }
});

app.listen(8888);

 

 

 

 

 


免責聲明!

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



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