关于 axios.defaults.withCredentials = true 不生效问题

在Vue开发过程中,跨域一直是无法避免的问题,跨域的解决可以通过:

  • 后端设置允许跨域
  • 前端设置反向代理
    来进行解决,相关方法在百度上有很多,直接百度Ctrl+C``Ctrl+V即可。
    但是关于在VUE项目中,后端使用SESSION的问题,因为后端使用SESSION是服务器端与浏览器端需要靠cookie的传递来实现鉴权识别,通过服务端在返回时发送set-cookie来自动设置到浏览器的cookie中,然后再之后请求的时候通过Request Headers中的cookie来识别SESSION信息,而在浏览器的协议中,cookie是只有在同源环境下,也就是不跨域的环境下才会自动请求带上cookie,而Vue的项目前后端分离的情况下,大部分情况是不同源的单独部署项目,所以无法自动带上cookie
    而Vue全家桶使用的axios是有响应的解决方案的axios.defaults.withCredentials = true;,通过设置这个参数来允许跨域的时候带上cookie信息,如果在设置这个参数之后出现了跨域错误,那么需要后台设置响应的Headers参数来处理,

重点

但是在我设置了axios.defaults.withCredentials = true;之后依然没有带上cookie信息,在网上找了很多文章也没有发现解决办法,最后在Response里面发现了问题,就是在浏览器的SiteSame的设置有问题。
在chrome 80版本之后,谷歌把cookie的SameSite属性,从None改成了Lax。这时候,会导致cookie因为跨站而导致不会自动带上!
所以需要后台在请求返回的时候 添加设置SiteSame 属性为 None 怎么设置百度即可找到。

Logo

前往低代码交流专区

更多推荐