Secure只会在https的时候发送
HttpOnly无法通过document.cookie访问
Cookie解决HTTP协议的无状态问题
获取网页cookie、Cookie是服务器发给客户端浏览器并保存在本地的一小块数据,并且在下一次访问时携带该数据发给服务器
浏览器第一次访问服务器并请求数据 --> 服务器响应浏览器,并且向浏览器发送请求的数据并且携带Cookie数据 --> 浏览器接收到后会把Cookie存储到客户端本地–> 当再次访问该服务器时,发送请求并且携带本地的Cookie --> 服务器接收Cookie并且响应请求的数据 --> 如此往返
1.服务器建立Cookie (浏览器第一次访问服务器)
2.服务器发送Cookie
怎么获取cookie登陆、3.浏览器接收Cookie,浏览器储存Cookie
4.浏览器发送Cookie(浏览器非第一次访问服务器)
5.服务器接收Cookie
现在浏览器现在出现了各种各样的储存方法 cookie逐渐淘汰
网站的cookie、Domain和Path标识定义了Cookie的作用域,即Cookie应该发送给那些URL
如果不指定,默认为当前文档的主机(不包含子域名)
如果指定Domain,一般包含子域名
Domain = XXXXX.com 则Cookie也包含子域名
Path标识指定了主机先的那个路径可以接受Cookie,用字符‘%x2F’("/")作为路径分隔符
获取浏览器cookie,Max-Age和Expires标识定义了Cookie的有效期
会话期Cookie
存储在浏览器中 关闭浏览器就消失 不需要Max-Age和Expires
持久性Cookie
存储在客户端的电脑中 关闭浏览器也会存在 这个可以定义生存时间
需要Max-Age和Expires
会话状态控制(购物车,用户登录状态等)
个性化设置(主题等)
浏览器行为跟踪
js通过document.cookie属性来访问和更新cookie
document.cookie = newCookie;
Cookie存储的格式是键值对 一个Cookie可以存储多个键值对 键值对之间用";"隔开
创建
document.cookie = ‘键 = 值;’ //只能对一个cookie进行设置和更新 可能会有多个cookie
document.cookie会把所有的cookie读出来
allCookies = document.cookie
通过每个cookie之间是用;隔开 所有通过字符串分割可以会的每一个
因为cookie是键值对 所有通过 键找到对应的cookie 然后通过键修改值
//cookie = ‘键1 = 值1’document.cookie = ‘键1 = 值2’;
js中删除Cookie只需要设置Expires标识为以前的时间 这样这个cookie就过期了 就是删除了
自动携带Cookie信息
服务器使用Set-Cookie响应头向用户代理(一般为浏览器)发送Cookie信息
一个Set-Cookie响应头 对应 一个键值对
Set-Cookie:<cookie名> = <cookie值>
Set-Cookie:<cookie名> = <cookie值>
服务器通过该头部告知客户端保存Cookie的信息
一个可以Cookie请求头携带多个键值对
Cookie:<cookie名> = <cookie值>;<cookie名> = <cookie值>.....
服务器
const http = require('http');
const fs = require('fs');http.createServer(function(req,res){console.log('requset come',req.url);const host = req.headers.hostif(req.url === '/'){const html = fs.readFileSync('test.html','utf-8');if(host === 'test.com'){res.writeHead(200,{'Content-Type':'text/html','Set-Cookie':['id=123;max-age=2','abc=444;HttpOnly','aaa=bbb;domain=test.com'],//发送时 实际是'Set-Cookie':'id=123;max-age=2'; 'Set-Cookie':'abc=444;HttpOnly';//写多个cookie时 nodejs中为用数组 每一个都是键值对 //实际上Set-Cookie并不能在一个Set-Cookie上写多个cookie 只不过是nodejs提供的一种便利的写法 //在真正发送时 还是一个Set-Cookie一个cookie键值对 写多个Set-Cookie//没有设置过期时间就是在关闭浏览器后失效 设置过期时间为max-age= 格式就是上面写的那样 //加上HttpOnly就会禁止js访问这个cookie//domain是设置让某个域下的所有子域都能访问这个cookie });}res.end(html)}}).listen(8888);
// http://127.0.0.1:8888/
客户端
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><div>xxxxaaaawwww</div>
</body>
<script>console.log(document.cookie)
</script></html>
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态