前后端分离,SpringBoot拦截器中,获取的请求头为NULL。

发布于 2022-09-12 01:39:13 字数 821 浏览 27 评论 0

前端用axios发起请求,后端拦截器拦截后,获取的请求头为空

已经在Vue项目的的main.js中设置了
//允许携带cookie
axios.defaults.withCredentials = true;
axios发起请求的代码:
this.$axios.get('/admin/get', {params: this.queryInfo}).then((response) => {
  if (response.data.code == "1") {
    //第一个data是response的属性,第二个是自定义实体里面的data。。。
    this.adminList = response.data.data.adminList;
    this.totalPages = response.data.data.totalPages;
    this.totalElements = response.data.data.totalElements;
  } else {
    this.$message.error(response.data.message);
  }
});
浏览器中查看请求,请求头中的参数命名存在,但是后端就是获取不到:

后端拦截器中获取的请求头为null

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

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

发布评论

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

评论(1

把时间冻结 2022-09-19 01:39:13

问题已经解决
原因:
原因是后端会接收到两次请求:

  • 第一次是 OPTIONS请求,这个请求不会携带参数,所以获取不到数据
  • 第二次才是GET/POST,携带参数

解决方法:
如果是OPTIONS请求,则放行,否则进行拦截判断。

if (HttpMethod.OPTIONS.toString().equals(request.getMethod())) {
    log.info("OPTIONS请求,放行");
    return true;
}

参考文章:SpringBoot跨域,拦截器中,第一次获取的请求头为NULL,发送两次请求的处理方式

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