Http Cookie 定义和使用

Http Cookie

Cookie

  • 定义
    http cookie也叫做web cookie或browser cookie,一般是服务器主动发给客户端,客户端存储下来,下一次请求的时候携带这部分的内容一起发给服务器。一般用作于用户登录后,记录用户唯一标识的,减少重复的请求。

  • 主要用途

    • 会话管理:包括用户登录、购物车、游戏分数等
    • 用户自定义:主题、用户标识
    • 轨迹跟踪:用于记录用户习惯或行为偏好(现在广告都是这么做的)
  • 创建cookie
    当收到客户端的请求后,服务器端会应答包括 Set-Cookie的头部信息。cookie一般存储在浏览器,下一次再次请求同样路径的时候可以携带cookie的头部信息发送给服务器端。可以设置有效时间(Max_Age)或截止时间(Expired),也可以设置 cookie作用域(domain)的路径(path)。
    格式:

Set-Cookie: <cookie-name>=<cookie-value>

应答样例:

HTTP/2.0 200 OK
Content-type: text/html
Set-Cookie: yummy_cookie=choco
Set-Cookie: tasty_cookie=strawberry
```css
请求样例:(可以看出,cookie可以携带多个,并用;隔开)

GET /sample_page.html HTTP/2.0
Host: www.example.org
Cookie: yummy_cookie=choco; tasty_cookie=strawberry

- 有效时间的cookie,可以设置Max-Age或Expired
```css
Set-Cookie: id=a3fWa; Expires=Mon, 21 Oct 2019 07:28:00 GMT;
  • HttpOnly、SamSite和Secure
    一个安全的cookie是在http协议上加密后发送给服务器端的。由于cookie是保存在客户端的,一些敏感的信息这样就没办法保证cookie的安全性。JavaScript Api里面可以通过document.cookie来获取cookie的信息,为了防止XSS类的跨站脚本攻击,可以用HttpOnly来设置。

SameSite可以防范“跨站请求伪造”(XSRF)攻击,设置成“SameSite=Strict”可以严格限定 Cookie 不能随着跳转链接跨站发送,而“SameSite=Lax”则略宽松一点,允许 GET/HEAD 等安全方法,但禁止 POST 跨站发送。

Secure表示这个 Cookie 仅能用 HTTPS 协议加密传输,明文的 HTTP 协议会禁止发送。但 Cookie 本身不是加密的,浏览器里还是以明文的形式存在。

Set-Cookie: id=a3fWa; Expires=Wed, 21 Oct 2015 07:28:00 GMT; Secure; HttpOnly
Set-Cookie: key=value; SameSite=Strict
  • cookie的作用域
    作用域指定了 Cookie 所属的域名和路径,浏览器在发送 Cookie 前会从 URI 中提取出 host 和 path 部分,对比 Cookie 的属性。如果不满足条件,就不会在请求头里发送 Cookie。如果paht=/docs,那么以下三种情况cookie都是有效的。
/docs
/docs/Web/
/docs/Web/HTTP
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值