关于Chrome中SameSite安全机制的问题及解决方案

谷歌浏览器的SameSite安全机制的问题,浏览器在跨域的时候不允许request请求携带cookie,所以会带来一些系列问题。。。。

在这里插入图片描述
SameSite 可以有下面三种值:

  • Strict 仅允许一方请求携带 Cookie,即浏览器将只发送相同站点请求的 Cookie,即当前网页 URL 与请求目标 URL完全一致。
  • Lax 允许部分第三方请求携带 Cookie
  • None 无论是否跨站都会发送 Cookie

之前默认是 None 的,Chrome80 后默认是 Lax

以下方案只在80版之下使用:

在服务端使用中间件进行允许跨域设置:
res.set('Access-Control-Allow-Origin',req.headers.origin);//允许跨域的请求源
res.set('Access-Control-Allow-Credentials',true);//允许跨域后session的存取
res.set('Access-Control-Allow-Headers','token');//跨域时,允许前端携带的请求头字段,若设置为*,则允许所有

前端ajax请求数据的时候要加上允许请求携带参数

$.ajax({
            url: "http://localhost:3000/user/register",
            type: "post",
            data: "username=zhangcuishan&password=asdf123&code=" + code,
            xhrFields: {          //添加头信息
                withCredentials: true,
            },
            success(data) {
                console.log(data);
            },
            error(err) {
                console.log(err);
            }
        });

你可能感兴趣的:(开发过程中遇到的问题整理记录,node.js,前端,chrome,google,chrome)