繁体   English   中英

如何为PHP和NodeJS获取相同的请求标头

[英]How to get same request headers for PHP and NodeJS

我正在使用PHP + NodeJS开发应用程序(它们之间的通信是通过REDIS pub / sub进行的)。 大多数代码是用PHP编写的,NodeJS在某些任务的后台运行。
我不知道将PHP + NodeJS用于此类事情是否是个好主意,但我想要这样的事情:

用户打开一个网站,此刻Node.js正在检查用户是否已登录。 如果是这样,它会从数据库(REDIS)中获取某些内容,我们称其为“模式”并将其存储在临时哈希/列表中。 然后其他用户发布一些看起来像问题的东西。 该问题由pub / sub发送到NodeJS,Node正在检查该问题是否与任何活动模式(来自临时哈希/列表的模式)匹配。

这是我不知道的问题

我无法在NodeJS中获得PHPSESSID

我努力了:

var app = express();
var server = app.listen(3001);
var io = socket.listen( server );

// #1
io.sockets.on('connection', function(socket){
   console.log('New user!');
   // Here I want to check if user is logged by checking PHPSESSID
   console.log(socket.request.headers.cookie); // <-- this one doesn't return PHPSESSID (It's return only io cookie)
});

// #2
io.set('authorization', function (handshakeData, callback) {
    var cookie = handshakeData.headers.cookie;
    console.log(cookie); // <--- doens't return PHPSESSID (It's return only io cookie)

    callback(null, true);
});

// #3
var options = {method: 'GET', host: 'my-app.com', port: 80, path: '/'};
var req = http.request(options, function(res) {
        console.log(JSON.stringify(res.headers));
        // PHPSESSID is different then PHPSESSID in browser
    }
);
req.end();

有什么办法可以获取包含PHPSESSID的当前请求标头? 还是有一种可以并行运行PHP和Node的方法? 因此,我可以在PHP和NodeJS中获得相同的HTTP请求吗? (我使用Nginx)

谢谢你的帮助

由于您已经在使用Redis,因此您也可以使用它在应用程序的PHP和Node.js部分之间共享会话信息。 您将需要在Node.js中使用例如cookie模块来检索PHP会话信息。

这里给出了带有代码示例的更详细的答案:

https://simplapi.wordpress.com/2012/04/13/php-and-node-js-session-share-redi/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM