问题背景
在前后端分离的大趋势下,如果没有额外的配置部署方案,前端地址和后台API地址是不一样的。比如在本地开发调试阶段,前端地址为http://localhost:3000
,后台API地址为http://api.server.com/api/list
。
那么地址不一样会有什么问题呢?
如果你请求的后台API需要携带Cookie进行鉴权,那么在这种地址不一样的情况下,会因为浏览器的Cookie SameSite的跨站限制,导致Cookie不会被正确传递,进而导致请求API接口总是报错没有认证或者权限不足。
什么是Cookie SameSite
2016年开始,Chrome 51版本对Cookie新增了一个SameSite属性,用来防止CSRF攻击。
简单来说,在新版本的浏览器上,如果前端地址和请求的API地址的domain不一样的话,则会限制携带Cookie。