Session 是否可以将HTTP头添加到Socket.io握手?

Session 是否可以将HTTP头添加到Socket.io握手?,session,authentication,node.js,socket.io,Session,Authentication,Node.js,Socket.io,我正在尝试保护socket.io客户端和node.js端之间的通道。主web应用程序在Drupal中,因此如果node.js在另一台主机上,我无法将cookie传递给node.js。我想向Socket.iohttp握手添加一些自定义头(如PHP会话)。 你知道这是否可能吗? 使用Socket.io 0.7p.S:我只是在这里进行一点头脑风暴。我喜欢这个问题,我将对此多考虑一些。我只在node.js中考虑过这个问题,只在同一个域中… Github问题 我不知道(我不这么认为)是否可以添加标题。 P

我正在尝试保护socket.io客户端和node.js端之间的通道。主web应用程序在Drupal中,因此如果node.js在另一台主机上,我无法将cookie传递给node.js。我想向Socket.iohttp握手添加一些自定义头(如PHP会话)。 你知道这是否可能吗?
使用Socket.io 0.7

p.S:我只是在这里进行一点头脑风暴。我喜欢这个问题,我将对此多考虑一些。我只在node.js中考虑过这个问题,只在同一个域中…

Github问题 我不知道(我不这么认为)是否可以添加标题。 P.S:我认为你们也应该设法填补这个问题。github的好处在于,当有人发布问题时,作者将收到一封电子邮件。此外,learnboost的员工都是非常好的人,他们愿意帮助您。

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

推荐人 已传递引用器,因此您可以从中传递信息。这也可以被欺骗,所以你最好创建一些你可以从Drupal验证(只验证一次)的东西。我想这很容易实现

仅允许验证后的消息流。 我知道您可以通过
socket.disconnect()
断开套接字。打开连接并检索socket.io的id,但仅在身份得到批准后接受消息。我会通过express提供一条路线,Drupal可以将socket.io的id卷曲到该路线(保持路线私有)。因为您在Drupal的域中,所以可以访问Drupal的会话信息

// v0.7.x
var sid = socket.id;
要使其安全,唯一的选择是使用SSL(这是确保任何通信链路安全的唯一方法)。如果您信任这两个域,那么可能并不真正需要SSL。然后,如果socket.io的id被允许,您将允许消息流,否则我将断开连接

普舍拉普 另一个选项是实现/克隆pusherapp身份验证=>


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

正如我所说,问题在于Drupal和Node.js服务器不在同一台主机上。Drupal页面中的socket.io逻辑,因此Drupal Cookie不会传递给Node.js所在的主机。(我在另一个线程上对你的答案进行了投票,并偷走了parse_cookie helper:)@claudio你是对的:$。我错过了另一个主机部分,因此会话/cookie无法共享:$。我想我知道你想要什么,但不是通过添加标题。请等待几分钟,让我尝试一下并更新我的答案…非常感谢您的头脑风暴(我也在做很多)!另一个需要考虑的是,如果Cookie不是特定于主机的,那么问题看起来就不那么严重:我可以使用Web的“www. MyServer”和“Sook.IO端点”的“No.MyServer .com”。TCP端口似乎不是问题。我看到您在github中添加了问题。希望吉列尔莫能想出一个干净的解决办法。