应用说明:
(1)两个网站主域名不同才需要这样跨域设置(如:***.a.com,***.b.com ,a 和 b 不同的情况)
(2)chrome浏览器内核才需要这样跨域设置(chrome edge 360 需要,firefox新版本默认限制了,ie目前未试通)
(3)浏览器登录a系统拿到cookie值,然后在a系统网页中带着cookie值参数调用b系统接口设置b主域cookie值。
1、提供cookie值一方,在网页中以ajax方式调用被设置cookie值方的接口,发送cookie值【网站可以是http/https协议】
$.ajax({
url:"https://***/***/setCookie",
xhrFields: {
withCredentials: true
},
data: {
cookieName:'zxwCookieName',
cookieValue:'我的测试cookie值',
maxAge:30
}
})
2、被设置cookie值一方,提供无权限验证接口。【网站必须是https协议】
接口前缀地址:https://***/***
@ResponseBody
@GetMapping("/setCookie")
public void setCookie(HttpServletResponse response, HttpServletRequest request, String cookieName, String cookieValue, Integer maxAge){
maxAge = maxAge == null ? 60*30 : maxAge;
response.setHeader("Set-Cookie", cookieName+"="+cookieValue+";SameSite=None;Secure;path=/;Max-Age="+maxAge);
response.addHeader("Access-Control-Allow-Credentials", "true");
response.addHeader("Access-Control-Allow-Origin", request.getHeader("origin"));
}