Cookie

Cookie是什么?

Cookie是服务器保存在浏览器的一小段文本,一般大小不超过4KB,浏览器每次向服务器发送请求就会自动附带上这段信息。

Cookie的作用?

Cookie 主要保存状态信息,如:

对话管理:保存登录、购物车等需要记录的信息。

个性化信息:保存用户的偏好,比如网页的字体大小、背景色等等

追踪用户:记录和分析用户行为。

Cookie 不是一种理想的客户端储存机制。它的容量很小(4KB),缺乏数据操作接口,而且会影响性能。只有那些每次请求都需要让服务器知道的信息,才应该放在 Cookie 里面。

Cookie里面的数据有哪些?

1 Cookie的名字

2 Cookie的值(真正的数据写在这里面)

3 到期时间(超过这个时间会失效)

4 所属域名(默认为当前域名)

5 生效的路径(默认为当前网址)

用户可以设置浏览器不接受 Cookie,也可以设置不向服务器发送 Cookie。window.navigator.cookieEnabled属性返回一个布尔值,表示浏览器是否打开 Cookie 功能。

document.cookie属性返回当前网页的 Cookie。

不同浏览器对 Cookie 数量和大小的限制,是不一样的。一般来说,单个域名设置的 Cookie 不应超过30个,每个 Cookie 的大小不能超过4KB。超过限制以后,Cookie 将被忽略,不会被设置。

Cookie的生成

Cookie 由 HTTP 协议生成,也主要是供 HTTP 协议使用。服务器如果希望在浏览器保存 Cookie,就要在 HTTP 回应的头信息里面,放置一个Set-Cookie字段

 如果服务器想改变一个早先设置的 Cookie,必须同时满足四个条件:Cookie 的keydomainpathsecure都匹配。

 Cookie的发送

浏览器向服务器发送 HTTP 请求时,每个请求都会带上相应的 Cookie。也就是说,把服务器早前保存在浏览器的这段信息,再发回服务器。这时要使用 HTTP 头信息的Cookie字段。

 Cookie的属性

1 Expires属性指定一个具体的到期时间(如果不设置该属性,或者设为null,Cookie 只在当前会话(session)有效,浏览器窗口一旦关闭,当前 Session 结束,该 Cookie 就会被删除

2 Max-Age属性:指定从现在开始 Cookie 存在的秒数

如果同时指定了ExpiresMax-Age,那么Max-Age的值将优先生效。

如果Set-Cookie字段没有指定ExpiresMax-Age属性,那么这个 Cookie 就是 Session Cookie,即它只在本次对话存在,一旦用户关闭浏览器,浏览器就不会再保留这个 Cookie。

3 Domain属性指定浏览器发出 HTTP 请求时,哪些域名要附带这个 Cookie

4 Path属性指定浏览器发出 HTTP 请求时,哪些路径要附带这个 Cookie。

5 Chrome 51 开始,浏览器的 Cookie 新增加了一个SameSite属性,用来防止 CSRF 攻击和用户追踪。

 Cookie 的SameSite属性用来限制第三方 Cookie,从而减少安全风险。它可以设置三个值。

Strict , Lax None

Strict

Strict最为严格,完全禁止第三方 Cookie,跨站点时,任何情况下都不会发送 Cookie。换言之,只有当前网页的 URL 与请求目标一致,才会带上 Cookie。

Lax , None 自行查阅

 

posted @ 2020-09-13 16:55  登峰至极  阅读(521)  评论(0编辑  收藏  举报