Cookie字段:
Name
:Cookie
名称,一旦创建不可修改Value
:Cookie
值Domain
:Cookie
在哪个域是有效的,也就是决定向该域发送请求时是否携带此Cookie,对子域名生效Path
:Cookie
的有效路径,对子路径生效Expires/Max-age
: 均为Cookie
的有效期,Expires
是该Cookie
被删除的时间戳,不设置则默认关闭时删除,Max-age
是Cookie
的有效期,表示多少秒后失效,0
立即失效,-1
关闭页面时失效Size
:Cookie
的大小HttpOnly
: 值为true
或false
,设为true
时,不允许document.cookie
去更改这个值,这个值在document.cookie
中也不可见,但请求仍会携带Secure
:Cookie
的安全属性,设置为true
,则浏览器只会在https
和SSL
等安全协议中传输此cookie
,不会在不安全的http
协议中传输SameSite
: 限制第三方cookie
,表示Cookie不随着跨域请求发送,减少安全风险Strict
: 最为严格,完全禁止第三方cookie
,跨站点时任何情况都不发送cookie
Lax
: 稍稍放宽,大多数情况不发送第三方cookie
,但导航到目标网址的get
请求除外None
: 网站可以选择显式关闭SameSite
属性,将其设为None
。不过,前提是必须同时设置Secure
属性(Cookie
只能通过HTTPS
协议发送),否则无效。
Priority
: 优先级,chrome
的提案,定义了三种优先级,Low/Medium/High
,cookie
数量超出限制时低优先级会被优先清除- cookie数据大小不能超过4k,会在同源HTTP请求中携带,有路径的概念,在cookie的过期之前有效,在所有同源窗口中共享
JS操作Cookie:
- 每个cookie都是一个名/值对存储,而cookie字符串以“;”连接多个cookie名/值对,将cookie字符串分割成单独的一个cookie名/值对
var cookieArray = document.cookie; //获取cookie存储字符串
var arr = cookieArray.split(";"); //将获得的cookie字符串以;分割开获得单独每个cookie名/值对
- 获得cookie名对应的值
//假设要获取的cookie的名字是name,则遍历数组找到名字所对应的值
for(var i=0;i<arr.length;i++){
var arr1 = arr.split("="); //将名/值对以“=”分割开
if(arr1[0]=== 'name'){
var result = arr1[1]; //如果名为name,则结果result为名对应的值
}
}
- 设置cookie,设置cookie就是给cookie赋值name,value,days,所对应的含义是名,值,过期时间
//直接设置cookie赋值语句
document.cookie="name=value;expires=GMT_String";
//以函数方式
function setcookie(name,value,days){
var d= new Date();
d.setTime(d.getTime()+(days*24*60*60*1000));
var expires = d.toGMTString();
document.cookie = name+"="+value+";expires="+expires;
}
- 删除cookie就是将cookie的过期时间设置为0或者负数或者以前的时间。删除cokie时可以不指定cookie的值。
function delCookie(name) { //删除cookie
document.cookie = name+"=;expires="+(new Date(0)).toGMTString();
}