302跳转cookie没中上_关于我因为登录失败开始探究Cookie这档事

文章讲述了作者在开发过程中遇到的由于Chrome 80更新默认SameSite属性为Lax,导致本地跨站请求无法携带Cookie的问题。分析了SameSite属性的影响,提出了解决方案,包括更改本地前端地址的ETLD+1、使用本地转发服务器、更换浏览器、升级为HTTPS等。
摘要由CSDN通过智能技术生成

f662ea08fa84d042d796550ca5cb9386.png

写在前面

最近小枫在工作时遇到一个问题,经过几天的思索和探究终于找到了问题所在,觉得有点价值便写了这篇文章记录下来,分享给热爱学习、乐于思考的各位,希望每个遇到相同情况的人可以通过阅读这篇文章得到解答。

话不多说,开始吧!

问题

小枫最近在开发一个平台,这里统称为A平台;A平台由两个部分构成:

  • 前端部分
  • 后端部分

可以看出,这是前后端分离开发的模式,前端和后端的正式环境都为:http://bin.ruofee.cn(题外话:SN战队很棒了,希望明年再度捧起LPL的荣光)。PS:本篇文章中的域名都是虚构的,如有雷同,纯属巧合。(-.-)

因为公司还有许多平台,考虑到用户信息的安全性,需要登录平台统一进行登录状态管理,因此也有个统一登录平台: http://login.ruofee.cn,这里统称为Login平台

7a49c2894f1f1f8fba7316d899a2b48f.png
登录流程

平台的登录流程如下:

  1. 浏览器打开A平台,首先进行用户状态判断:判断是否存在auth_token(auth_token是Login平台设置到浏览器中的cookie,用于登录状态保持),如果auth_token不存在则表示A平台未进行登录操作(当然也有可能进行过登录操作,但cookie已经过期),通知浏览器跳转到Login平台进行账号密码登录,如(4);如果auth_token存在则表示A平台已经进行过登录操作,进行下一步操作;
  2. A平台后端接口根据业务提供了一个接口:http://bin.ruofee.cn/api/validate,用于验证auth_token是否有效,如果有效则返回用户的个人信息,如果无效则通知浏览器跳转Login平台重新登录,如(3)。/validate接口的逻辑很简单,直接访问Login平台提供的验证接口(http://login.ruofee.cn/auth)进行auth_token验证。
  3. 浏览器不存在auth_token或者auth_token失效时都会跳转到Login平台进行账号密码登录,登录成功时Login平台会将新的auth_token设置为cookie,保存在浏览器中,用于保持当前的登录状态;

以上就是平台登录的大致流程,可以看出,平台如果想接入统一登录服务,关键的点在于A平台前端在访问A平台后端时,是否可以自动带上Login平台设置的cookie(auth_token),从而进行后面的auth_token校验流程

那么来进行简单的分析:

Login平台在登录成功时,浏览器通过Response Headers中的Set-Cookie进行cookie设置:

# Login平台登录成功时设置cookie

Set-Cookie: auth_token=xxx; domain=ruofee.cn; path=/;

从Set-Cookie的结构可以看出:

  • auth_token的domain为http://ruofee.cn,而不是login.ruofee.cn;
  • path为/;
  • </
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值