Indicate whether to send a cookie in a cross-site request by specifying its SameSite attribute
原因:
分析:
Google 在2020年2月4号发布的 Chrome 80 版本(schedule:https://www.chromestatus.com/features/schedule)中默认屏蔽所有第三方 Cookie,即默认为所有 Cookie 加上 SameSite=Lax 属性(https://www.chromestatus.com/feature/5088147346030592),并且拒绝非Secure的Cookie设为 SameSite=None(https://www.chromestatus.com/feature/5633521622188032)
SameSite的作用就是:防止跨域传送cookie,从而防止 CSRF 攻击和用户追踪,此举是为了从源头屏蔽 CSRF 漏洞。
关于 SameSite 属性的介绍,可参考阮一峰的《Cookie 的 SameSite 属性》。
原文链接:https://blog.csdn.net/yhyc812/article/details/108623844
CSRF
- CSRF全拼为Cross Site Request Forgery,译为跨站请求伪造。
- CSRF指攻击者盗用了你的身份,以你的名义发送恶意请求。
- 简单理解别人拿着你的cookie去登陆网站干坏事
解决
- 我报错的具体原因就是:我在http://localhost:3000/msite跨域请求了http://172.20.91.81:3000/sockjs-node/info?t=1634957626945,在http://localhost:3000/msite网站跨域传送了cookie(connect.sid 172.20.91.81)
- 而/sockjs-node/info?t=1634957626945我并没有去请求它啊?
- 然后百度发现:vue-cli4在运行npm run serve 之后 network 里面一直调研一个接口:http://localhost:3000/sockjs-node/info?t=1634957626945
- 解决:
- 找到/node_modules/sockjs-client/dist/sockjs.js
- 找到代码的 1605行
// An highlighted block
try {
// self.xhr.send(payload); 把这里注掉
} catch (e) {
self.emit('finish', 0, '');
self._cleanup(false);
}
- 点击刷新,报错消失