主要使用setHeader方法,第一个参数,返回头的名称,Set-Cookie,第二个参数可以是字符串也可以是字符串数组,什么区别:

1、如果使用字符串,那么代表只设置一条cookie,在浏览器返回头中可以看到1个 Set-Cookie 行

2、如果使用数组,那么数组里的每个字符串都代表一条cookie,在浏览器返回头中可以看到多个 Set-Cookie 行

一条cookie的格式应该是下面这个样子的字符串:

name=value; Domain=.google.com; Path=/; HttpOnly; Expires=Sat, 24 Apr 2021 15:03:08 GMT; Secure

注意:

一条cookie只能有一个键值对,其他字段都是控制字段,要设置多个键值对就需要设置多条cookie

一次设置一条cookie的key如果之前出现过,那么会覆盖,如果没有出现过,那么会加到header中跟之前的cookie一起发送到服务器,服务端会收到字符串:key=value; key2=value2; key3=value3

一次设置多条cookie,如果有相同的key,那么会覆盖,之前出现过的都会覆盖,这是合理的

Path如果有虚拟目录,不一定非得以 “/” 符号结尾

如果不设置Path,只会在请求同路径或子路径时带cookie

Domain属性如果设置为.google.com,那么所有以它结尾的域名都可以访问该cookie,当然也可以直接设置为google.com

Secure属性如果存在,表示该cookie仅能用安全协议传输,比如https

Expires属性和maxAge属性都能设置过期时间,但是不建议使用maxAge,虽然感觉maxAge更好用,但是浏览器可能不认,自己测试过maxAge不靠谱,也查过资料,有老外也是这么说的

Expires属性的值应该是由类似下面函数生成的:

const createCookieExpires = n => {
let date = new Date();
date.setSeconds(date.getSeconds() + n);
return date.toUTCString();
};