首先感谢这位博主的博客,引导我向作用域的方向进行思考,如其文章中Path=/wxconfig,浏览器点F12查看network对应的接口可见,原文链接[https://blog.csdn.net/huanhuan03/article/details/107540814]。对于前后端分离实现图片验证码这个功能,虽然我前两年已经有过实现,但是那是基于JSP+Servlet非前后端分离的。这次弄的是基于spboot微服务+Vue,获取验证码的数据途径路径为“VueProxy->微服务gateway->最终的服务工程A”。由于A的接口为http://xxx.xxx.xxx.xxx:9096/edu/captcha,即端口位后边URI为/edu/captcha,cookie只能设置到edu这个域。而Vue的vue.config.js中proxy名字为auth,所以现在的情况是只能用于edu域的cookie:JSESSIONID无法被给到auth,每次请求验证码都会获取一个新的会话JSESSIONID,导致去验证这个验证码正确性的时候出现失败。因为验证的时候发向的是一个新的会话,前一个会话才有存这个码的session.Attribute.Key。修正这有三个地方,其一axios.defaults.withCredentials = true; 其二changeOrigin: true,其三proxyName必须与后台的contextPath对应(特别是后台设置了server.servlet.context-path: /edu这种的)。这两天我找了些博客,后台拦截器过滤器设置如response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));等参数的居多,但并不是主要的解决辦法。最终的结论是,注意cookie作用域的问题。-----笔记
- 复制链接
- 举报