首先介绍一下项目中用到的东西:
- 前台iview-admin框架
- java后台,使用shiro作为登录的框架。
想要实现的是登录功能。
shiro用的是session+cookie的机制,因此需要进行cookie的设置和返回给后台。
然后发现个问题:
后台明明都有set-cookie头部,但是很无语的是,浏览器的cookie存储那边找不到任何的cookie。用console.log(document.cookie)
也得到是''。
然后开始找错。
- 发现axios没有设置withCredentials为true,加上
- 以为是后台的问题,后面发现后台该有的设置都有了,包括
Access-Control-Allow-Origin
设置不为'*'(动态设置为请求地址),Access-Control-Allow-Credentials
为true,Access-Control-Allow-Methods
为POST(动态设置为POST) - 为了排除是后台的错误,我把前端的网络请求部分单独拿出来放到一个index.html里面。发现set-cookie和返回cookie正常进行。
然后就很难受了。翻来看去,该有的设置都有了。但是set-cookie就是失败。之后找了一天的答案(怪自己搜索能力太差)。
终于在github上找到了解决方法issue 962,按照上面的指示,去掉main.js中的mock.js引入.....
//if (process.env.NODE_ENV !== 'production') require('@/mock')
好了,世界和平