美文网首页
前后端分离的项目ajax跨域请求怎样附带cookie

前后端分离的项目ajax跨域请求怎样附带cookie

作者: 谢大见 | 来源:发表于2019-03-04 16:50 被阅读0次

    原文:https://blog.csdn.net/palerock/article/details/73456992
    参考:https://www.cnblogs.com/gdufs/p/8442648.html

    在前后端分离的项目中,ajax跨域请求怎样附带cookie

    在项目的实际开发中,我们总会遇到前后端分离的项目,在这样的项目中,跨域是第一个要解决的问题

    除此之外,保存用户信息也是很重要的

    然而,在后台保存用户信息通常使用的session和cookie结合的方法,

    而在前端的实际情况中,跨域产生的ajax是无法携带cookie信息的,这样导致了session和cookie的用户信息储存模式受到影响,该怎样去解决这样一个问题呢

    跨域了,不会带上已有的 Cookie

    解决方案

    1.自己架个反向代理啥的把两个搞到一个域名上。

    2.前端设置withCredentials,后端设置Access-Control-Allow-Credentials。

    // 后端设置Access-Control-Allow-Credentials
    // 解决跨越问题
          response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));
            response.setHeader("Access-Control-Allow-Methods", "*");
            response.setHeader("Access-Control-Max-Age", "3600");
            response.setHeader("Access-Control-Allow-Headers", "DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization,SessionToken");
    
    
        // 允许跨域请求中携带cookie
            response.setHeader("Access-Control-Allow-Credentials", "true");
    
    
    
    // 前端设置withCredentials
    
    $.ajax({
      type: "post",
      url: xxx,
      data: xxx,
      contentType: 'application/json',
      dataType: "json",
      xhrFields: {
          withCredentials: true
      },
    
      success: function (data) {
      }
    })
    

    注意: 后台解决跨域代码的response.setHeader("Access-Control-Allow-Origin", "");这部分和设置跨域携带cookie部分产生了冲突,在查阅相关资料我发现设置跨域ajax请求携带cookie的情况下,必须指定Access-Control-Allow-Origin,意思就是它的值不能为,设置为response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));

    相关文章

      网友评论

          本文标题:前后端分离的项目ajax跨域请求怎样附带cookie

          本文链接:https://www.haomeiwen.com/subject/enbiuqtx.html