axios跨域请求后台验证码时出现后台session为空的解决办法

我们知道“axois”是ajax的替代品,他支持promise链式调用,同时他也遵循ajax的同源策略。
最近用vue做一个前后台分离的系统时,在开发环境下就出现了跨域的问题,于是在Java的代码中需要加这个:

  Httpservletkesponse response = (Httpservletkesponse) ;
  //添加跨域CORS
  response.setHeader("Access-Control-llow-redentials,"true");
  response.setHeader("Access-Control-llow-0rigin,"http: //localhost:8080");
  response.setHeader("Access-Control-Allow-Headers,"X-Requested-with,content-type,toke");
  response.setHeader("Access-Cotrol-llow-Methods","GET,HEAD,POST,PUT,DELETE,TRACE,OPTIONS,PATCH");
  HttpSession session= request.getSession( ); 

因为我的前端本地的地址是:localhost:8080;所以就需要设置“Access-Control-llow-0rigin”属性值为“http: //localhost:8080”
这样就实现了跨域的请求。

但是在做验证码校验的时候,又遇到了另一个问题,后台本就是将发送的验证码存在Session中,然后根据前台提交过来的验证码做校验,但是现在这个Session会丢失,根本存不进Session里边,Session里边的验证码一直为空。找了半天才找到解决方案:

1, 后台设置接受前台的请求证书

 response.setHeader("Access-Control-llow-redentials,"true");

1,前台axios设置也设置携带证书

axios.defaults.withCredentials=true;

如此一来,问题就解决了,后台拿到了Session里的验证码了!

你可能感兴趣的:(工作笔记)