session – 是否可以将HTTP标头添加到Socket.io握手中?

我正在尝试保护socket.io客户端和node.js端之间的通道.主Web应用程序在Drupal中,因此如果node.js在另一台主机上,我无法将cookie传递给node.js.我想为他的Socket.io HTTP握手添加一些自定义标头(就像
PHP会话一样).

你知道是否有可能吗?

使用Socket.io 0.7 最佳答案 P.S:我只是在这里集思广益.我喜欢这个问题,我会更多地考虑一下这个问题.我只考虑过来自node.js相同的域名…

Github问题

我不知道(不这么认为)是否可以添加标题.
P.S:我认为你也应该尝试在https://github.com/LearnBoost/socket.io/issues填写问题.关于github的好处是作者会在有人发布问题时收到电子邮件. Learnboost的人也非常善于帮助你.

代理

代理您的所有请求,以便请求来自同一个域.

Refererer

传递引用,以便您可以传递信息.这也可能是欺骗性的,因此您可以更好地创建可以从Drupal验证(仅一次)的内容.我想这很容易实现……

仅在验证后允许消息流动.

我所知道你可以做的是通过socket.disconnect()断开套接字.打开连接并检索socket.io的id,但仅在身份获得批准后才接受消息.我会通过快递建立一个路由,Drupal可以将socket.io的id卷曲到(保持路由私有).因为您在Drupal的域内,所以您可以访问Drupal的会话信息.

// v0.7.x
var sid = socket.id;

为了确保安全,唯一的选择是使用SSL(这是您可以保证任何通信链路安全的唯一方法).如果您信任两个域的SSL可能不是真的必要.然后,如果允许socket.io的id,你将允许消息流动,否则我将断开连接.

PusherApp

另一种选择是实现/克隆pusherapp authentication => http://pusher.com/docs/client_api_guide/client_channels#subscribe-private-channels

P.S:我稍后会尝试上传一个例子,但现在是我睡觉的时候了.希望这有任何意义:))…

点赞