字画网站建设/网店代运营哪个好
网络请求中,token和cookie有什么区别?
cookie:
- HTTP无状态,每次请求都要带cookie,以帮助识别身份
- 服务端也可以向客户端set-cookie, cookie大小限制4kb
- 默认有跨域限制:不跨域共享,不跨域传递
什么叫cookie不跨域共享,不跨域传递?
比如:
从8080端口拿8081端口的cookie,默认情况下,拿不到的,因为默认情况不跨域共享
从8080端口传递cookie去8081端口,默认情况下,传递不了,因为默认情况下不跨域传递
Cookie本地存储
- HTML5之前cookie常被用于本地存储
- HTML5之后推荐使用localStorage和sessionStorage
现代浏览器开始禁止第三方cookie
- 和跨域限制不同。这里是:禁止网页引入的第三方JS设置的cookie
- 打击第三方广告,保护用户隐私
- 新增属性SameSite:Strict/Lax/None;值可以自己选择,严格、松散、没有。
cookie和session
- cookie用于登录验证,存储用户标识(如userID)
- session在服务端,存储用户详细信息,和cookie信息一一对应
- cookie+session是常见的登录验证解决方案
JWT(JSON Web Token)是token的技术术语,可以取代session + cookie,用于做用户登录校验
- 前端发起登录,后端验证成功之后,返回一个加密的token
- 前端自行存储这个token(其中包含了用户信息,加密了,丢失了没关系,别人解密很难)
- 以后访问服务端接口,都带着这个token,作为用户信息
- token的存储放在localStorage就可以
区别:
1、cookie里面只包含了用户的ID,用户的全部信息存储在session中,而session存储在服务器端,不会随着消息传递,但是token里面存储了用户的详细信息,随着传递信息传来传去,但是token加密了,传丢了没关系,别人解不开
2、cookie是HTTP标准,跨域限制,配合session使用,而token无标准,自定义传递,无跨域限制,用于JWT(也就是说cookie不用管它,自动传递,但是token不行,需要明确地传值才可以传过去,token就像一个参数,不加就不传,cookie是只要域名符合,不跨域就会自动传)
3、 cookie会默认被浏览器存储,而token需自己存储
4、 最初使用官方的cookie解决登录验证问题,但是cookie问题太多,出现了来自民间的Token解决方案,cookie比较学院派,token比较灵活的。