socket.io 设置没有相同站点属性的跨站点 cookie

Gee*_*eek 12 npm socket.io

我有一个 socket.io 应用程序,最近我收到了这个警告:

URL上的跨站点资源关联的 cookie设置为没有该SameSite属性。未来版本的 Chrome 将仅在跨站点请求中使用SameSite=None和设置 cookie 时才传送 cookie Secure

您可以在应用程序>存储>Cookies 下的开发人员工具中查看 cookie,并在https://www.chromestatus.com/feature/5088147346030592https://www.chromestatus.com/feature/5633521622188032 上查看更多详细信息 。`

显然,Chrome 将来会更新它: SameSite 警告 Chrome 77

我已经尝试过这个,但没有明显的效果:io = io.listen(server, { cookie: false });

我认为 cookie 没有任何作用,那么如何禁用 io 设置呢?

Din*_*aNT 6

根据 Socket IOs 的 github repo 中报告的问题,该 cookie 不用于任何事情;您可以通过cookie: false在服务器选项中设置来禁用它。

但是您错过的是{cookie: false}初始化套接字时的设置选项,而不是http.listen. 下面提供的解决方案对我有用,它使用 express 作为服务器。

var server = require('http').createServer(express());
var io = require('socket.io')(server, { path:"/some/path", cookie: false });
Run Code Online (Sandbox Code Playgroud)

  • 这不是真的。当多个并行的 socket.io 服务器可用时,cookie 有时用于提供 ELB(例如 haproxy)粘性。 (2认同)