问题一. 前后端分离cookie传递解决方案
前端设置:
withCredentials: true //在跨域请求时,是否携带用户凭证;false会忽略 cookie
withCredentials是XMLHttpRequest的一个属性,表示跨域请求是否提供凭据信息(cookie、HTTP认证及客户端SSL证明等)
实际中用途就是跨域请求是要不要携带cookie
后端设置:
// 设置Access-control-Allow-Origin和Access-Control-Allow-Credentials
// Access-control-Allow-Origin 不能为*,需要设置成具体的域名
httpServletResponse.setHeader("Access-control-Allow-Origin",httpServletRequest.getHeader("Origin"));
httpServletResponse.setHeader("Access-Control-Allow-Credentials", "true");
Access-Control-Allow-Origin是HTML5中定义的一种解决资源跨域的策略。 他是通过服务器端返回带有Access-Control-Allow-Origin标识的Response header,用来解决资源的跨域权限问题。
Access-Control-Allow-Credentials响应报头指示的请求的响应是否可以暴露于该页面。当true值返回时它可以被暴露。 凭证是 Cookie ,授权标头或 TLS 客户端证书。 当作为对预检请求的响应的一部分使用时,它指示是否可以使用凭证进行实际请求。
参考博客:https://blog.csdn.net/jerry741/article/details/121003187
问题二. 二级域名不同造成后台cookie取不到值问题
cookie设置:
// js-cookie
Cookies.set(key, value, { domain: '.域名' } ) //注意domain第一个字符必须为“.”,如.baidu.com
// cookie设置
document.cookie = "key=value;path=/;domain=.csdn.net"
domain可以设置访问该Cookie的域名。如果设置为“.study.com”,则所有以“study.com”结尾的域名都可以访问该Cookie。注意第一个字符必须为“.”