表现形式

前端后端都在localhost主机的域名下,反复确认,符合CORS协议的要求;

描述起来就像: 后台允许跨域,浏览器在符合CORS协议的情况下,忽略了cookie 写入请求,不讲武德~~

代码表现

const $axios = axios.create({
timeout: 3000,
headers: {"withCredentials":true}
});
//...
doLogin() {
$axios.post(BASE_PATH+LOGIN_PATH,qs.stringify(this.logindata),{headers: {'Content-Type': 'application/x-www-form-urlencoded'}})
.then(response => {
if (response.status == 200) {
sessionStorage.setItem(LOGIN_PAGE_KEY, response.data.userId)
window.location.href = '/'
} else {
alert("登陆失败:" + response.errors)
}
})
.catch(e => {
alert("登陆失败:" + e)
});
},

解决方案

const $axios = axios.create({
timeout: 3000
});
$axios.defaults.withCredentials = true

不明觉厉!! 按理说,写入cookie 应该是浏览器的默认行为,这货不按常理出牌!

解决方案来自知乎:​​vue前端项目后端set-cookie,前端的cookie里什么东西都没有,怎么解决?​

此外,设置axios不仅在设置请求头,同时也设置了axios的默认行为,与直接设置请求头是不一样的