Connect的cookie解析器支持常规cookie、签名cookie和特殊的JSONcookie。req.cookies默认是用常规未签名cookie组装而成的。如果想支持session()中间件要求的签名cookie,在创建cookieParser()实例时要传入一个加密用的字符串。
1、基本用法
作为参数传给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对象中。把两个对象分开是为了体现开发者的意图。如果都放在一起,常规cookie可能就会被改造,仿冒签名cookie
签名cookie:tobi:**********************,点号左边的是cookie的值,右边是在服务器上用SHA-1 HMAC生成的加密哈希值。如果cookie的值或者HMAC被改造的话,Connect的解签会失败。
3、JSONcookie
JSONcookie带有前缀j:,告诉Connect它是一个串行化的JSON,它既可以是签名的,也可以是未签名的。
4、设定出站cookie
Connect可以通过res.setHeader()函数写入多个Set-Cookie响应头。
网友评论