HTTP协议中的Cookie是什么?有哪些属性?

Cookie 是 HTTP 协议中存储在客户端的一小块数据。它与特定的域关联,用来存储用户信息。
Cookie 主要有以下属性:

  1. Name:Cookie 的名称。 identifies the cookie.
  2. Value:Cookie 的值。存放实际的数据内容。
  3. Domain:Cookie 要发送到的域名。浏览器会根据这个属性决定要不要把 Cookie 包含在请求中。
  4. Path:Cookie 所在的路径。浏览器也会根据这个属性决定要不要把 Cookie 包含在请求中。
  5. Expires/Max-Age:Cookie 的过期时间。Expires 是绝对过期时间,Max-Age 是相对于请求时间的秒数。
  6. Secure:布尔值,表示是否只在 HTTPS 连接上发送 Cookie。
  7. HttpOnly:布尔值,表示是否允许通过 JavaScript 访问 Cookie。
  8. SameSite:枚举值,”Strict” 或 “Lax”,表示 Cookie 在跨站点请求中是否发送。

举例:

  1. 简单 Cookie:
Set-Cookie: username=John
  1. 带有多个属性的 Cookie:
Set-Cookie: username=John; expires=Wed, 30 Oct 2019 12:00:00 UTC; 
   domain=.example.com; path=/; secure; httponly; samesite=strict
  1. 在请求中发送 Cookie:
GET / HTTP/1.1
Host: www.example.com
Cookie: username=John
  1. 在响应中接收 Cookie:
HTTP/1.1 200 OK
Set-Cookie: username=John

所以,Cookie 是 HTTP 协议中重要的状态管理机制。理解 Cookie 的各个属性及其语法,可以让我们更好地在 Web 应用中实现会话状态管理和个性化功能。Cookie 的安全性和隐私性也一定要引起重视,不然可能导致一定的安全隐患。