使用Node.jsparsingCodeIgniter cookie

我正在尝试使用node.jsparsingCodeIgniter cookie。 我使用这个代码来获取所有的cookies:

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; } 

它返回所有的cookies,然后我做:

 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包来parsing这些。

如果你不想添加另一个依赖,并且假设CodeIgniter的cookiescheme不会有太大的改变,你可以做一些简单的事情

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

哪个发现s:32:"(??)"的发生s:32:"(??)" ? 是32个字母数字字符。 [1]是因为match()返回匹配数组, [0]是整个匹配( s:32:"(??)" ), [1]是第一个捕获组(括号内),即?? ,这是你想要的。