vuejs (前端项目) + spring mvc(后台项目),每次ajax请求都是新的session Id

发布于 2022-09-04 20:47:32 字数 189 浏览 13 评论 0

最近学习使用vuejs 前后端分离原有的项目,使用vue-resource 实现ajax请求,后端项目设置了允许跨域访问,虽然实现了跨域异步请求,但是每次ajax请求的session都不一样,导致无正常获取登录信息?

搜索了很久,一般都是说怎么实现跨域请求,但是没有查到,怎么保证session一致的方法。

不知道怎么解决这个问题?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

安静 2022-09-11 20:47:32

问题解决了,解决方式如下:
1、参考ccfish的意见,安装了http-proxy-middleware插件,配置了如下内容:

devServer: {
    host: '127.0.0.1',
    port: 8010,
    proxyTable: {
      '/自定义内容/': {
        target: 'http://127.0.0.1:8080',
        changeOrigin: true       
      }
    }

结果报错:

Invalid configuration object. webpack-dev-server has been initialised using a configuration object that does not match
 - configuration has an unknown property 'proxyTable'. These properties are valid:

修改为:

devServer: {
    host: '127.0.0.1',
    port: 8010,
    proxy: {
      '/api/': {
        target: 'http://127.0.0.1:8080',
        changeOrigin: true,
        pathRewrite: {
          '^/api': '/自定义内容'
        }
      }
    }

可以正常使用;
另外我把vue-resource 切换成了axios
配置如下:

import axios from 'axios';

axios.defaults.withCredentials=true;//让ajax携带cookie
Vue.prototype.$axios = axios;

后台项目拦截器中增加了,修改如下:

response.setHeader("Access-Control-Allow-Headers", "X-Requested-With, accept, content-type, exception");
        response.setHeader("Access-Control-Allow-Methods", "GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, PATCH");
        response.setHeader("Access-Control-Allow-Credentials", "true");
        response.setHeader("Access-Control-Allow-Origin", "http://127.0.0.1:8010");//前段项目的域

Access-Control-Allow-Credentials 设为true的话,Access-Control-Allow-Origin就不能设为*了,只好改成具体的域了,这样就可以多次请求取到的session id就一致了。

最后非常感谢ccfish 、暗暗啊和工口会员!
ps:
原来使用的验证就是token,主要是项目小,要求也不高,不想用token了,

别忘他 2022-09-11 20:47:32

vuejs 开发模式下可以用proxyTable做NODE代理以避免浏览器跨域,生产环境下,可以通过NGINX等做代理为同一域名。。。

半窗疏影 2022-09-11 20:47:32

跨域应该是不能共享session的吧,因此每次都会生成一个sessionid.
建议采用token去认证。可选方案jwt、oauth等

苦行僧 2022-09-11 20:47:32

多半是因为没有开启cookie共享,credential前后端都设置一下

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文