我正在尝试使用 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/