axios跨域,Set-Cookie不生效,axios默认不写入cookie
原创
©著作权归作者所有:来自51CTO博客作者wx62c2ea9a5dac8的原创作品,请联系作者获取转载授权,否则将追究法律责任
表现形式
前端与后端都在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的默认行为,与直接设置请求头是不一样的