1.现象
做企业微信开发时,进行前后端分离,前端使用vue开发(移动端组件库使用vant),后端使用原来PC项目(spring+springmvc+JdbcTemplate)开发。前端和后端分别部署在不同的域名服务器上。
在后端进行oauth2授权登录后,将登录信息存储到session,后端重定向到前端地址。前端调用axios请求后端,在后端获取不到保存的session。因为是不同域名,所以在后端有进行跨域配置
后端跨域配置(在后端的登录过滤器添加),这样就跨域进行跨域访问了。
response.setHeader("Access-Control-Allow-Headers", "X-Requested-With, accept, content-type, xxxx");
response.setHeader("Access-Control-Allow-Methods", "GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, PATCH");
response.setHeader("Access-Control-Allow-Origin", "*");
然而因为是使用session进行登录保存的,上面这样配置只能进行跨域请求,而不能保存session,每次请求后端接口获取都是新的session,sessionID都不一样。
要让后端返回cookie,需要设置
response.setHeader("Access-Control-Allow-Credentials", "true");
这样配置的话Access-Control-Allow-Origin就不能配置为*,必须配