[cookie]cookie的属性及如何操作cookie

DiracKeeko

cookie
存储在用户本地(硬盘上)。最大4KB

服务器为了识别用户(区分唯一链接)在用户首次访问页面的时候,客户端向服务端发送请求,服务端返回请求的时候会带上Set-Cookie字段,用于给客户端设置一些参数。
当客户端要发送http请求时,浏览器会先检查下是否有对应的cookie。有的话,则自动地添加在request header中的cookie字段。注意,每一次的http请求时,如果有cookie,浏览器都会自动带上cookie发送给服务端。

(用户登录 -> 发送请求(携带账号密码) -> 服务器验证 -> 响应请求(分发认证信息,如cookie/jwt等,对cookie认证,认证信息可以通过键值对的方式自定义,如设置"sid"为"zhangsan",设置cookie的参数,如过期时间,域名,路径等) -> 浏览器接收请求后,将cookie存储在本地 -> 下次在同一域名下发送请求自动携带cookie)

在服务器端可以对cookie的参数进行设置
可以设置的选项包括:

过期时间 Max-age/expires, 域名domain,路径path,   httpOnly,secure

过期时间 Max-age/expires
Max-age 设置这个键值对在浏览器的最长保存时间。是一个从服务器当前时刻开始的毫秒数。
expires 设置这个键值对的失效时刻。
如果 maxAge 和 expires 都没设置,Cookie 将会在浏览器的会话失效(关闭浏览器时)的时候清空。

Domain
Domain设置键值对生效的域名,如设置www.google.com,则只有在访问google这个域名时会携带这条cookie。

Path
设置键值对生效的 URL 路径,默认设置在根路径上(/),也就是说向当前域名下的所有路径发送请求都可以携带这个Cookie。

注意:Domain是域名,Path是路径,两者加起来就构成了 URL,Domain和Path一起来限制 cookie 能被哪些 URL 访问。

httpOnly
当cookie携带httpOnly选项时,客户端(也就是浏览器)无法通过js代码去访问(包括读取、修改、删除等)这个cookie。

secure
仅当请求是HTTPS协议时,包含secure选项的 cookie 才能被携带发送至服务器。

下面是一段第一次登陆时,服务器response返回cookie的展示
"sid=zhangsan; expires=Sat, 12 Sep 2020 02:26:00 GMT; domain=www.google.com; path=/; secure; HttpOnly"

打开浏览器,打开一个网页,查看控制台的Application -> Storage -> Cooikes 能够看到当前网站所存储的Cookie
image.png

打开网页,控制台输入document.cookie 可以打印出一段cookie。(注意: 这个方法只能获取非 HttpOnly 类型的cookie)

此外,如果通过前端(浏览器)设置cookie,可以通过执行document.cookie = "key=name"
document.cookie = "name=lynnshen";
document.cookie = "age=18";
(设置多个cookie的方法就是重复执行document.cookie = "key=name")

同步发布于自己的语雀
https://www.yuque.com/diracke...

阅读 294
7 声望
0 粉丝
0 条评论
你知道吗?

7 声望
0 粉丝
宣传栏