1. 首先,Cookie 是什么?
简单来说,Cookie 是用来在客户端存储会话信息的,它要求服务器在响应给客户端信息时,携带一个头部字段 Set-Cookie,其内容为键值对——一些需要存储在客户端本地的信息。在之后的每一次请求中,浏览器会将这些信息,携带在请求头部字段 Cookie 中,发送给服务器,用以标识客户端的身份。
比如一个简单的应用:将用户第一次登录的账号信息存储在 Cookie 中,下次用户访问这个网站时,请求携带了上一次访问网站登录的信息,则用户无需输入账号密码即可登录【存在安全隐患】。
下面在其他博主那里转的图,附上链接:https://www.cnblogs.com/qcloud1001/p/10101067.html
第一次请求:
下一次请求:
2. Cookie 的属性:
【1】构成键值对的 名称 与 属性值:名称是用以唯一标识 Cookie 的,不区分大小写,值就是这个 Cookie 的内容.
【2】Domain 域 、Path 路径:两者一起限制在请求哪些服务器时,会携带 Cookie 信息,即如果要访问的 URL 的域名是 Cookie Domain 的值或者是其子域,且 URL 的路径是 Cookie Path 的值或者其子路径,则代表会携带 Cookie 信息。
比如:Cookie 设置的 Domain 为 "baidu.com",Path 为 "/",那么我们访问 "baidu.com/" 或者 子域 "m.baidu.com/" 或者子路径 "m.baidu.com/home",均可携带 Cookie.
【3】expires 过期时间:它限制了在何时 Cookie 信息会被清除,当这个值没有被指定时,默认过期时间是会话结束,即关闭浏览器。它的值必须是 GMT 格式的时间,如果把值设置为过去的时间,那么这个 Cookie 会被立即清除。注意的是:expires 是 http 1.0 协议的字段,在 http 1.1 协议中 expires 已被弃用,使用了 Max-Age 替代,expires 是到指定时间过期,而 Max-Age 是创建后过多少秒过期。
【4】secure 安全标志:当你给 Cookie 设置了 secure 时,只有使用 SSL 安全连接的情况下,才会把 Cookie 发送到服务器【即 http 不会发送 Cookie,只有 https 才会发送 Cookie】,默认情况不设置 secure,它是 Cookie 属性中唯一一个不是键值对形式,只需要写上 secure 即可生效。
【5】