Cookie是什么
- Cookie 是浏览器访问服务器后,服务器传给浏览器的一段数据
- 浏览器得到Cookie后会进行保存
- 此后每次浏览器访问服务器时都会带上这个Cookie
Cookie的作用
- 识别用户身份
- 记录历史
设置Cookie
服务器通过设置Set-Cookie
响应头来设置Cookie
Set-Cookie: <cookie-name>=<cookie-value>
还可以添加前缀后缀:
Set-Cookie: <cookie-name>=<cookie-value>; Expires=<date>
Set-Cookie: <cookie-name>=<cookie-value>; Max-Age=<non-zero-digit>
Set-Cookie: <cookie-name>=<cookie-value>; Domain=<domain-value>
Set-Cookie: <cookie-name>=<cookie-value>; Path=<path-value>
Set-Cookie: <cookie-name>=<cookie-value>; Secure
Set-Cookie: <cookie-name>=<cookie-value>; HttpOnly
- __Secure- 前缀:以 __Secure- 为前缀的 cookie,必须与 secure 属性一同设置,同时必须应用于安全页面(即使用 HTTPS 访问的页面)。
Set-Cookie: __Secure-ID=123; Secure; Domain=example.com
- __Host- 前缀: 以 __Host- 为前缀的 cookie,必须与 secure 属性一同设置,必须应用于安全页面(即使用 HTTPS 访问的页面),必须不能设置 domain 属性 (也就不会发送给子域),同时 path 属性的值必须为“/”。
Set-Cookie: __Host-ID=123; Secure; Path=/
- Expires=<date>:cookie 的最长有效时间,形式为符合 HTTP-date 规范的时间戳
- Max-Age=<non-zero-digit>:在 cookie 失效之前需要经过的秒数。
- Domain=<domain-value>:指定 cookie 可以送达的主机名。
- Path=<path-value>:指定一个 URL 路径,这个路径必须出现在要请求的资源的路径中才可以发送 Cookie 首部。
- Secure :一个带有安全属性的 cookie 只有在请求使用SSL和HTTPS协议的时候才会被发送到服务器。
- HttpOnly:设置了 HttpOnly 属性的 cookie 不能使用 JavaScript 进行访问,以防范跨站脚本攻击
Cookie的特点
- 遵循同源策略
- 可以设置有效期
- 最大容量为4K,不要存大量数据,影响传输效率
- 可以在浏览器端修改