什么是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 。对于不怎么改变的数据尽量使用 localStorage 存储,否则可以用 sessionStorage存储
