【问题标题】:How to set or delete a cookie from io.use如何从 io.use 设置或删除 cookie
【发布时间】:2017-09-19 09:37:06
【问题描述】:

在 socket.io 的 Server 对象中,为了方便起见,我将其称为 iouse 方法可以访问 Express 的 request 对象和 handshake 对象。这些是只读对象吗?

io.use(function(socket,next)) {
   var req = socket.request;
   //how do I delete or set a cookie here?
   next();
}

我想删除一个 cookie。我该怎么做?

【问题讨论】:

  • AFAIK,你不能,因为那需要发送一个 HTTP response,而你不能从 SocketIO 连接。

标签: node.js express socket.io


【解决方案1】:

您可以从 socket.io 发出事件,客户端将设置/清除 cookie:

服务器:

const cookie = require('cookie');

let someCookie = cookie.serialize('foo', 'bar');
socket.emit('set_cookie', someCookie);
socket.emit('delete_cookie', 'foo');

客户:

socket.on('set_cookie', (cookie) => {
    document.cookie = cookie;
});
socket.on('delete_cookie', (cookie) => {
    document.cookie = cookie + '=;expires=Thu, 01 Jan 1970 00:00:01 GMT;';
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-27
    • 2011-04-13
    • 1970-01-01
    • 2011-08-03
    相关资源
    最近更新 更多