cookie服务端基本设置
const http = require('http');
http.createServer((req, res) => {
// 获取客户端的
const Cookies = {};
req.headers.cookie && req.headers.cookie.split(';').forEach(cookie => {
const part = cookie.split('=');
Cookies[part[0].trim()] = (part[1] || '').trim();
});
console.log(Cookies);
// 设置客户端的
res.writeHead(200, {
'Set-Cookie': 'SSID=Ap4GTEq; Expires=Wed, 13-Jan-2021 22:23:01 GMT;HttpOnly',
'Content-Type': 'text/html'
});
res.end('Hello World\n<script>console.log(document.Cookie)</script>').listen(8000);
});
-
HttpOnly
属性: 微软对Cookie的扩展,如果设置,则通过js脚本等将无法读取到Cookie信息,防止XSS -
Secure
属性: 当设置为true时,只能以HTTPS传递,如果是HTTP则不会传递该信息。所以在客户端,无法在document.Cookie
找到被设置Secure = true
的Cookie键值对。Secure = true
比HttpOnly
对访问控制更严格 -
path
属性: 指定可访问Cookie的目录 -
domain
属性: 指定可访问Cookie的主机名,同一个域下的不同主机
语法:'name=value;domain=CookieDomain';
eg: 'name=value;domain=.google.com' 这样www.google.com和gmail.google.com都可以获取到该Cookie
-
Expires
属性: 指定过期时间
语法: 'name=value; expires=GMT_String'
GMT_String是以GMT格式表示的时间字符串,超过这个时间,Cookie就消失
-
Max-Age
属性: 指定此Cookie从创建到过期所能存在的时间,单位是秒,可以为负值- 当为负值时,该Cookie只储存在浏览器内存,只要关闭浏览器,此Cookie就会消失
- 当为正值时,就表示所能存在时间
- 当为0时,从客户端电脑或浏览器内存中删除此Cookie
- 默认初始值为 -1