后端开发环境:Django 3.2.9
前端开发环境:vue3 + ts
浏览器版本:chrome(96.0.4664.45)
问题:
最近开发一个新项目,前端使用axios进行http类的封装,前后端分离进行api调试,进行登录后,后续的api调用发现无法识别到cookie。
尝试情况:
1、axios设置withCredentials,无效
2、分析api请求和响应信息,发现响应标头有一段警告信息
大概意思就是:set-cookie被阻止,无法设置,原因是SameSite=Lax
随后查找关于SameSite的相关信息发现:SameSite需要设置为None值,且开启Secure属性才行
但经过一轮查找尝试,发现我目前的chrome版本已经移除了这两个属性的设置,所以该方法也无法解决问题。
3、联想到既然是响应标头出现报警信息,那么可以考虑从django入手。在官网上输入"SAMESITE",果然找到了相关的说明,通过在settings.py设置SESSION_COOKIE_SAMESITE='None'和SESSION_COOKIE_SECURE=True后成功解决问题。