Http的Cookies机制

之前讲Http是无状态的,服务器不会对Http请求有记忆性。在一些需要服务器记忆的场景,比如用户识别、登录状态保持方面,略有不足。

Cookies机制应运而生,浏览器发送请求后,服务器可在响应报文中设置Cookies字段,浏览器接收到后存储在Cookies的存储区中。在后续符合要求的请求中,会默认携带Cookies信息。

Cookies字段

Set-Cookie

服务器通过Set-Cookie字段设置Cookies,以name=value的形式。

还可设置Cookie的属性值,如

  • domain(域名)、path(路径),只有请求符合域名和path时才会携带Cookies。
  • Expires和max-age,都表示Cookies的过期时间,其中Expires是绝对时间,max-age为相对时间(即是一个时间长度,单位为ms,收到请求时间为起始时间,推算出绝对时间)。两者可以不一致,最终以max-age为准。
  • HttpOnly关键字,表示此Cookie只能在Http请求中读取,其他获取方式无效(如document.cookie),可以提升隐私安全性。
  • SameSite属性,可用于防御跨站点伪造攻击(XSRF)。决定在跳转到的第三方网站中发送的伪造请求是否携带Cookie信息。可选三个值:Lax(默认值)、Strict和None。为Lax时在跳转到的页面中发送Get、Head请求时可携带Cookies,为Strict时,不允许携带Cookies;为None时不做限制。
  • Secure关键字,表示只在Https加密请求中携带Cookies。

Cookie

浏览器收到响应报文中的Set-Cookie字段后,将cookies存储到专用的存储区。发送符合条件(域名、路径、过期时间等上述几个属性)的请求时,会携带Cookie。

Cookie中可有多个name-value字段,用分号隔开

实例

第一次请求该网站,还没有Cookies,服务器会在响应报文中设置Cookies。


第一次请求报文
第一次响应报文

第二次请求该网站,已有Cookies,响应报文中会携带Cookies。


第二次请求报文

第二次响应报文

用途

主要用于身份识别,从而进行登录状态保持、内容和广告的精准投放等事务。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • HTTP 起源 HTTP 是由蒂姆·伯纳斯-李(TimBerners—Lee)于1989年在欧洲核子研究组织(CE...
    Gopal阅读 3,644评论 0 1
  • 上回就已经承诺过大家,一定会出 HTTP 的系列文章,今天终于整理完成了。作为一个 web 开发,HTTP 几乎是...
    Java旺阅读 3,382评论 0 0
  • 久违的晴天,家长会。 家长大会开好到教室时,离放学已经没多少时间了。班主任说已经安排了三个家长分享经验。 放学铃声...
    飘雪儿5阅读 12,195评论 16 22
  • 创业是很多人的梦想,多少人为了理想和不甘选择了创业来实现自我价值,我就是其中一个。 创业后,我由女人变成了超人,什...
    亦宝宝阅读 5,851评论 4 1
  • 今天感恩节哎,感谢一直在我身边的亲朋好友。感恩相遇!感恩不离不弃。 中午开了第一次的党会,身份的转变要...
    余生动听阅读 13,589评论 0 11