在写毕设过程中遇到第一个比较难解决的问题就是Axios跨域默认不携带cookie的问题,这个小小的问题足足花了我一天的时间去解决。
项目用到的后台语言是nodejs。先说明解决跨域问题用的是koa-cors(不会的兄弟们可以自行百度,简单好用)
回到正题,后台检查登录成功以后,服务器给浏览器发送cookie
router.post('/user/login', async ctx => {
var json = ctx.request.body;
console.log(json)
var result = await DB.find('user', json);
console.log(result);
if (result.length == 0) {
ctx.body = 1;
} else {
ctx.session.usermsg = “张三”;
console.log(ctx.session.usermsg)
ctx.body = 0;
}
})
但在其他页面发送Axios请求时,后台其他路由在用ctx.session.usermsg获取session时却是undefined。
然后百度发现Axios默认不携带cookie,所以在vue前端src文件下的main.js设置了如下代码:
axios.defaults.withCredentials = true
然后nodejs后台设置
app.use(cors({
origin: 'http://localhost:8080', //根据vue服务器的地址来填写
credentials: true
}))
结果还是继续报错,如下图
根据提示把上诉代码改成下面的即可
app.use(cors({
origin: 'http://127.0.0.1:8080',
credentials: true
}))
最后Axios请求时就会携带上cookie啦。
远离熟悉的环境去工作实习实在是太孤独了,还要做毕业设计,太难了。不管怎样希望兄弟们一起加油吧