cookie
什么是 cookie:
- 存储在浏览器的一段字符串,最大 5kb
- 跨域不共享
- 格式形如:key1=value1; key2=value2
- 每次发送 http 请求,会将请求域的 cookie 一起发送给 server
客户端查看、修改 cookie
开发者工具查看:
domain
: cookie生效的域名;
可以直接这样追加cookie:
注意:每对 key=value 之间,是用“;
”分隔的,分号后面还有空格。
server 端操作 cookie
获取-示例
const serverHandle = (req, res) => {
// 解析 cookie
req.cookie = {
}
const cookieStr = req.headers.cookie || ''
console.log(cookieStr) // 格式:key1=value1; key2=value2
cookieStr.split(';').forEach(item => {
if(!item) return
const [key, val] = item.split('=')
req.cookie[key.trim()] = val.trim() // 用 trim 去掉首尾空格
})
}
const server = http.createServer(serverHandle)
server.listen(8000)
写入-示例
// 设置 cookie 过期时间的方法
const getCookieExpires = () => {
const d = new Date()
d.setTime(d.getTime() + (24 * 60 * 60 * 1000))
return d.toGMTString()
}
const handleUserRouter = (req, res) => {
const method = req.method
// 模拟一下登录
if(method === 'GET' && req.path === '/api/user/login'){
const {
username, password } = req.query
const result = login(username, password) // login 方法是去数据库查询对应的用户数据并返回
return result.then(data => {
if(data.username) {
// 设置 cookie
res.setHeader('Set-Cookie', `username=${
data.username