javascript - 使用 Node.js 解析 CodeIgniter cookie

标签 javascript node.js socket.io

我正在尝试使用 node.js 解析 CodeIgniter cookie。我正在使用此代码获取所有 cookie:

function parse_cookies(_cookies) {
   var cookies = {};

   _cookies && _cookies.split(';').forEach(function( cookie ) {
     var parts = cookie.split('=');
     cookies[ parts[ 0 ].trim() ] = ( parts[ 1 ] || '' ).trim();
   });

   return cookies;
}

它会返回所有的 cookie,所以我会这样做:

var cookies = parse_cookies(handshakeData.headers.cookie);
console.log(cookies.ci_session);

但是 ci_session cookie 是这样的格式:

a:4:{s:10:"session_id";s:32:"152933dbf8a52a55b48518b940451aey";s:10:"ip_address";s:12:"192.168.1.68";s:10:"user_agent";s:72:"Mozilla/5.0+(Windows+NT+6.1;+WOW64;+rv:34.0)+Gecko/20100101+Firefox/34.0";s:13:"last_activity";i:1419314157;}44503444ab1688f1e3a5ece6a3ff1e024e4b773f

如何从中获取 session_id 值?

最佳答案

这种格式看起来像 PHP 的 serialize()功能。有一个 NPM Package 解析那些。

如果您不想添加另一个依赖项,并且假设 CodeIgniter 的 cookie 方案不会改变太多,您可以做一些简单的事情

cookies.ci_session.match(/s:32:"([a-z0-9]{32})"/)[1]

它会找到 s:32:"(??)" 的出现位置 ??是 32 个字母数字字符。 [1] 是因为 match() 返回一个匹配数组,[0] 是整个匹配(s:32 :"(??)") 和[1]是第一个捕获组(括在括号中),即??,这就是你想要的.

关于javascript - 使用 Node.js 解析 CodeIgniter cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27615087/

相关文章:

javascript - fs.watch 事件和 websockets,捕捉 "no-change"情况

angularjs - 如何在 angularjs 中加载时填充文本字段

javascript - 断开 Sockect.io 房间中的所有用户

javascript - 在制作多人游戏时,我是否依赖浏览器不向玩家提供变量(这样他就可以破解)?

JavaScript 帮助器 | startsWith() 不是一个函数

javascript - Angular 2 将数据从组件发送到服务

node.js - 多个 2dsphere 索引,不确定要运行 geoNear 中的哪一个

node.js - Socket IO WebSocket 请求被公司防火墙阻止。

javascript - 处理 promise 链中的早期返回的最佳方式?

javascript - 循环中 JavaScript 中的可变变量