Connect的cookie解析器支持常規(guī)cookie、簽名cookie和特殊的JSONcookie。req.cookies默認是用常規(guī)未簽名cookie組裝而成的。如果想支持session()中間件要求的簽名cookie,在創(chuàng)建cookieParser()實例時要傳入一個加密用的字符串。
1既峡、基本用法
作為參數(shù)傳給cookieParser()的密鑰用來對cookie簽名和解簽,讓Connect可以確定cookie的內容是否被篡改過碧查。這個密鑰應該是個長度合理的字符串运敢。
const connect = require('connect')
const app = connect()
app.use(connect.cookieParser('tobi is a cool ferret')
.use(function(req, rese){
console.log(req.cookies)
console.log(req.signedCookies)
res.end('hello\n')
})
app.listen(3000)
2校仑、簽名cookie
簽名cookie放在req.signedCookies對象中。把兩個對象分開是為了體現(xiàn)開發(fā)者的意圖传惠。如果都放在一起迄沫,常規(guī)cookie可能就會被改造,仿冒簽名cookie
簽名cookie:tobi:**********************,點號左邊的是cookie的值卦方,右邊是在服務器上用SHA-1 HMAC生成的加密哈希值羊瘩。如果cookie的值或者HMAC被改造的話,Connect的解簽會失敗盼砍。
3尘吗、JSONcookie
JSONcookie帶有前綴j:,告訴Connect它是一個串行化的JSON,它既可以是簽名的浇坐,也可以是未簽名的睬捶。
4、設定出站cookie
Connect可以通過res.setHeader()函數(shù)寫入多個Set-Cookie響應頭近刘。