felix-cao / Blog

A little progress a day makes you a big success!
31 stars 4 forks source link

浏览器 Cookie 简介 #101

Open felix-cao opened 5 years ago

felix-cao commented 5 years ago

一、概念

Cookie 就是浏览器储存在用户电脑上的一小段文本文件。Cookie 是纯文本格式,不包含任何可执行的代码。一个 Web 页面或服务器告知浏览器按照一定规范来储存这些信息,并在随后的请求中将这些信息发送至服务器,Web 服务器就可以使用这些信息来识别不同的用户。大多数需要登录的网站在用户验证成功之后都会设置一个 Cookie,只要这个 Cookie 存在并可以,用户就可以自由浏览这个网站的任意页面。再次说明,Cookie 只包含数据,就其本身而言并不有害。

二、存储位置

Window 系统下 Chrome 浏览器的 Cookie 的存储位置

C:\Users\Administrator\AppData\Local\Google\Chrome\User Data\Default\Cache

Mac 系统下 Chrome 浏览器的 Cookie 的存储位置

~/Library/Application Support/Google/Chrome/Default

三、Cookie 生命周期

Cookie 默认情况下的有效期是很短暂的,一旦用户关闭浏览器,Cookie 保存的数据就会丢失。如果想要延长 Cookie 的有效期,可以通过设置HTTP头信息中的 cache-control 属性的 max-age 值,或者修改HTTP 头信息中的 expires 属性的值来延长有效期。

cookie 会被浏览器自动删除,通常存在以下几种原因:

四、Cookie 的数目和大小的限制

每个 web 服务器(域名)保存的 Cookie 数不能超过50个,每个 Cookie 保存的数据不能超过4KB,如果超过了4KB,服务器会处理不了。

五、JavaScript 中的 cookie

在 JavaScript 中通过 document.cookie 属性,你可以创建、维护和删除 cookie。创建 cookie 时该属性等同于 Set-Cookie 消息头,而在读取 cookie 时则等同于 Cookie 消息头。在创建一个 cookie 时,你需要使用和 Set-Cookie 期望格式相同的字符串:

document.cookie="name=Nicholas;domain=nczonline.net;path=/";

设置 document.cookie 属性的值并不会删除存储在页面中的所有 cookie。它只简单的创建或修改字符串中指定的 cookie。下次发送一个请求到服务器时,通过 document.cookie 设置的 cookie 会和其它通过 Set-Cookie 消息头设置的 cookie 一并发送至服务器。这些 cookie 并没有什么明确的不同之处。

要使用 JavaScript 提取 cookie 的值,只需要从 document.cookie 中读取即可。

Reference