解决前后端分离后的Cookie跨域问题

Posted 二十六度半

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决前后端分离后的Cookie跨域问题相关的知识,希望对你有一定的参考价值。


 

一. 前端Ajax关键配置

$.ajax({
  type: "post",
  url: xxx,
  data: xxx,
  contentType: ‘application/json‘,
  dataType: "json",
  xhrFields: {
      withCredentials: true
  },

  success: function (data) {
  }
})

 

二、后端过滤器关键配置

  //解决Cookie跨域问题
  response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));
  response.setHeader("Access-Control-Allow-Credentials", "true");
  response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
  response.setHeader("Access-Control-Allow-Methods","GET, POST, PUT, DELETE");

  //解决 Content-Type:application/json 时跨域设置失败问题
  if("OPTIONS".equals(request.getMethod())) {
      //放行OPTIONS请求
      filterChain.doFilter(request, response);
      return;
  }

 

注意:

  • "Access-Control-Allow-Origin" 不能设置成 "*"
  • 当 Content-Type 为 application/json 时,Ajax实际会发两次请求,第一次是一个OPTIONS请求,这时过滤器一定得放开

  

 

以上是关于解决前后端分离后的Cookie跨域问题的主要内容,如果未能解决你的问题,请参考以下文章

前后端分离(跨域)sessionid不一致Safari浏览器解决方案(不能保持会话或者不能存储cookie)

js跨域问题前后端分离的跨域问题

vue2 前后端分离项目ajax跨域session问题解决

前后端分离实践 — 如何解决跨域问题

前后端分离实践 — 如何解决跨域问题

对前后端分离的一些经验记录