session和token的使用


cookie在移动端兼容性不好,跨域也存在问题

session的使用

session存在于服务端内存,需要前端的cookie,也就是session-id配合获取信息

1. session的生成

session由后端生成,并会设置响应头Set-Cookie发送到浏览器或者其他客户端的一些信息,一般用于登陆成功的情况下返回给客户端的凭证信息,然后下次请求时会带上这个cookie,这样就能完成鉴权

2. 如何判断session有效期

1.后端可以设置session有效期,当然也能设置cookie的

token的使用

token是用于鉴权的标识符

1. token的生成

token由后端生成

2. 如何判断token有效期

1.如果存在cookie,可以设置cookie有效期,让cookie过期
2.如果是localStorage,交给后端判断

对比

token往往更有优势,session在移动端兼容性不好,跨域也存在问题。

例如,微信小程序就没有cookie,那它怎么可能会依据响应头来设置呢?

例如,我们请求https://www.google.com/时,浏览器会自动把google.com的Cookie带过去给google的服务器,而不会把https://www.baidu.com/的Cookie带过去给google的服务器。
这就意味着,由于域名不同,用户向系统A登录后,系统A返回给浏览器的Cookie,用户再请求系统B的时候不会将系统A的Cookie带过去。
针对Cookie存在跨域问题,有几种解决方案:

  • 服务端将Cookie写到客户端后,客户端对Cookie进行解析,将Token解析出来,此后请求都把这个Token带上就行了

  • 后端配置CORS时允许其跨域域名携带cookie

  • 将token保存在SessionStroage中,不依赖Cookie就没有跨域的问题了。


文章作者: iamfugui
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 iamfugui !
评论
  目录