跳转至

HTTP Cookie

时间:2023-06-29 18:24:24

参考:

  1. 深入理解浏览器Cookie
  2. Http Cookies 中 Max-age 和 Expires 有什么区别?

Cookie 设计用于存储客户端和服务端交互时的会话状态信息。

Cookie 存储在浏览器中,当浏览器发起到服务端请求的,会根据 Domain 和 Path 共同确定是否发送Cookie的服务端。

如果 Cookie 设置 Secure 属性,只有请求是 Https 请求的时候会发送 Cookie。

如果到了 Cookie 已经过期,则请求的时候不会带上该 Cookie。

如果设置了 HttpOnly 属性,则客户端没有修改该 Cookie 的权限。

字段 含义
Name 名字
Value 值
Path 请求路径,和Domain共同确定,该Cookie是否发送给服务端
Domain 所属的域,如.sunfeilong.com note.sunfeilong.com
Max-Age 距离过期还剩余多少秒。IE不支持,其余浏览器支持。不推荐使用
Expires 过期日期。推荐使用
Size Cookie 的大小。
HttpOnly 控制客户端是否可以编辑该Cookie。
Secure 安全性,设置该属性之后只有一HTTPS请求会带上该Cookie。

只有 Set-Cookie: tal_token=1; Path=/; Domain=sunfeilong.com; Expires=Sat, 15 Jul 2023 02:37:29 GMT; HttpOnly 这个Cookie会存储到浏览器中。

➜  test curl -I http://www.sunfeilong.com:8888/echo
HTTP/1.1 200 OK
Set-Cookie: tal_token=1; Path=/; Domain=sunfeilong.com; Expires=Sat, 15 Jul 2023 02:37:29 GMT; HttpOnly
Set-Cookie: tal_token=2; Path=/; Domain=note.sunfeilong.com; Expires=Sat, 15 Jul 2023 02:37:29 GMT; HttpOnly
Set-Cookie: tal_token=3; Path=/; Domain=aaaa.sunfeilong.com; Expires=Sat, 15 Jul 2023 02:37:29 GMT; HttpOnly; Secure
Set-Cookie: tal_token=3; Path=/; Domain=aaaa.sunfeilong.com; Max-Age=1689388649; HttpOnly; Secure
Date: Wed, 05 Jul 2023 02:37:29 GMT
Content-Length: 6
Content-Type: text/plain; charset=utf-8
curl 'http://www.sunfeilong.com:8888/echo' \
  -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7' \
  -H 'Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,zh-TW;q=0.7' \
  -H 'Cache-Control: no-cache' \
  -H 'Connection: keep-alive' \
  -H 'Cookie: tal_token=1' \
  -H 'Pragma: no-cache' \
  -H 'Upgrade-Insecure-Requests: 1' \
  -H 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1' \
  --compressed \
  --insecure