js-Cookie

一、概述
Cookie 是服务器保存在浏览器的一小段文本信息,每个 Cookie 的大小一般不能超过4KB;浏览器每次向服务器发出请求,就会自动附上这段信息;

二、Cookie的属性
Cookie包括: 名、值、失效时间、域名、路径、安全性
Cookie属性:name, value, expires, domain, path, security
属性解析:
1. name: Cookie的名字;
2. value: Cookie的值;
3. expires/Max-Age: Cookie 的失效时间, 指定一个具体的到期时间,到了这个时间后浏览器将不再保存这个Cookie,expires 的值是UTC格式 ,可以用Date.prototype.toUTCString()进行格式转换;而Max-Age指定的是失效的毫秒数, 例如(365 * 24 * 60 * 60)即一年,这个Cookie一年后就会失效,浏览器不会再保存它了,注意: 当同时指定了expires和Max-Age的时候,优先生效Max-Age;
4. domain:属性指定浏览器发出 HTTP 请求时,哪些域名要附带这个 Cookie,例如(以百度为例) www.baidu.com 的domain 会设置为 baidu.com;当给www.baidu.com及其子域发请求的时候都会带上这个Cookie, 不属于这个域名,则浏览器会拒绝这个Cookie而不带这个Cookie;
5. path: 指定浏览器发出 HTTP 请求时,哪些路径要附带这个 Cookie。默认值是 /(根域名), 例如指定 path='/',则访问www.baidu.com/doc 也会带上这个Cookie,但是指定这path='/doc' 则在访问www.baidu.com 的时候就不会带这个Cookie了, 因为它设置的 /doc路径 及其子路径下的请求能带;
6. secure: secure属性指定浏览器只有在加密协议 HTTPS 下,才能将这个 Cookie 发送到服务器。另一方面,如果当前协议是 HTTP,浏览器会自动忽略服务器发来的secure属性。该属性只是一个开关,不需要指定值。如果通信是 HTTPS 协议,该开关自动打开。
7. HttpOnly: HttpOnly属性指定该 Cookie 无法通过 JavaScript 脚本拿到,主要是document.cookie属性、XMLHttpRequest对象和 Request API 都拿不到该属性。这样就防止了该 Cookie 被脚本读到,只有浏览器发出 HTTP 请求时,才会带上该 Cookie。

示例:

document.cookie用于读写当前网页的Cookie
document.cookie; // name1=value1;name2=value2

//设置Cookie 所有的名和值都必须经过URL编码的,
document.cookie = encodeURIComponent('name')+'='+encodeURIComponent('Nicholas')+';'+exprires.toGMTString()+';'+domain='baidu.com;'+path='/'; // name=Nicholas;exmprires='日期';domain=.baidu.com;path=/;

由于 js 对于Cookie 的读写不够直观, 最好封装成读取、写入、删除操作的函数
const cookieUtil = {
getCookie() {

},
setCookie() {

},
removeCookie() {

}
}
未完待续…

猜你喜欢

转载自blog.csdn.net/qq_39406792/article/details/82564168