什么是Cookie?Cookie用来干什么的?

1.Cookie是什么?

cookie是浏览器支持的一种本地存储机制。一般由服务端设置生成,在响应请求时被自动存储在浏览器中。

2.为什么会有Cookie的存在?

cookie是为了辨别用户身份的。我们知道HTTP本身是无状态的协议,服务端不会记得是谁向它发来的请求。但在某些情况下我们需要记住用户在未登录的状态下浏览了什么,比如淘宝。这时候就需要借助我们的Cookie了。 客户端请求服务器后,如果服务器需要记录用户状态,服务器会在响应信息中包含一个Set-Cookie的响应头,客户端会根据这个响应头存储Cookie信息。再次请求服务器时,客户端会在请求信息中包含一个Cookie请求头,而服务器会根据这个请求头进行用户身份、状态等较验。

3.Cookie的使用要注意安全性。

  • 如果用于保存用户登录态,应该将该值加密,不能使用明文的用户标识
  • 不能通过 JS 访问 Cookie,减少 XSS 攻击
  • 只能在协议为 HTTPS 的请求中携带
  • 规定浏览器不能在跨域请求中携带 Cookie,减少 CSRF 攻击

4.cookie 和 session 的关系是什么?

服务端用 session 来保存用户加密后的状态,然后客户端用 cookie 来保存 session ,服务器端把 session 种植到 cookie 中,然后下次访问时,cookie 会携带着 session ,进而达到一个身份认证的效果。

5.cookie,localStorage,sessionStorage,indexDB的区别

特性 cookie localStorage sessionStorage indexDB
数据生命周期 一般由服务器生成,可以设置过期时间 除非被清理,否则一直存在 页面关闭就清理 除非被清理,否则一直存在
数据存储大小 4K 5M 5M 无限
与服务端通信 每次都会携带在 header 中,对于请求性能影响 不参与 不参与 不参与

从上表可以看到,cookie 已经不建议用于存储。如果没有大量数据存储需求的话,可以使用 localStoragesessionStorage 。对于不怎么改变的数据尽量使用 localStorage 存储,否则可以用 sessionStorage存储

你可能感兴趣的:(cookie,session)