关于 axios.defaults.withCredentials = true 不生效问题
关于 axios.defaults.withCredentials = true 不生效问题在Vue开发过程中,跨域一直是无法避免的问题,跨域的解决可以通过:后端设置允许跨域前端设置反向代理来进行解决,相关方法在百度上有很多,直接百度Ctrl+C``Ctrl+V即可。但是关于在VUE项目中,后端使用SESSION的问题,因为后端使用SESSION是服务器端与浏览器端需要靠cookie的传递来实现鉴
·
关于 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
怎么设置百度即可找到。
更多推荐
已为社区贡献3条内容
所有评论(0)