我有一个应用程序完全用PHP开发,现在我想集成RTN (实时通知系统)在我的应用程序。目前,我已经完成了用下面的代码在PHP呈现的页面之后连接到Node.js
服务器:
var app = http.createServer(function(request,response)
{
response.writeHead(200,{"Content-Type":"text/plain"});
response.end();
}).listen(3000);
var io = require('socket.io').listen(3000);客户端
<script src="http://localhost:3000/socket.io/socket.io.js"></script>
<script>
var socket = io.connect('http://localhost:3000');
socket.on('news', function (data) {
console.log(data);
socket.emit('my other event', { my: 'data' });
});
</script>但是现在我感到困惑的是,如何才能得到客户端请求的请求头呢?实际上,我想让客户端Cookie使用PHP进行开发,Node用于RTN系统。现在,由于我不知道如何获得请求头,所以也无法获得cookie:
更新了,我使用缓存来存储会话,这是我想获得cookie的主要原因,这样我就可以获得的会话信息
发布于 2014-03-02 10:09:06
如果您想在Node.js中获取PHP会话ID,那么只需使用以下命令
io.sockets.on("connection",function(client)
{
console.log(client.handshake.headers.cookie);
});它将返回PHP会话ID,如果您不使用上面提到的方式,即PHP生成的页面并单独调用Node,这可能会有所不同。上述命令的输出如下所示
PHPSESSID=aj233jkjdfbk13adlljkwlkjjkj002这是因为PHP已经设置了cookie,您将得到返回ID的headers.cookie,这是PHP的会话ID。
发布于 2014-03-02 05:13:27
服务器生成的会话cookie具有"HTTPOnly“标志,您不能在客户端或任何其他服务器上读取它,只能在原始服务器上读取它。客户端浏览器只向原始服务器发送会话cookie,
因此,如果PHP上有mydomain.com,而Nodejs位于mynode.com上,则mynode.com将不会接收mydomain.com生成的会话cookie
您需要在php和nodejs之间共享会话--请看以下内容:http://simplapi.wordpress.com/2012/04/13/php-and-node-js-session-share-redi/
https://stackoverflow.com/questions/22124109
复制相似问题