我有来自cookie的字符串:
"io=ZCgMK9hyc95vNRBMAAAA; vsid=910vr1505908332008888; csrftoken=FQCHNYIOvrAQztBHPNQlCiy4xorlZVs5; sessionid=uaggm1q1rcxy2o49noaw4b6djg8j18by"
,我需要将其解析为javascript对象。我试图使用这个RegExp:
var uri = socket.request.headers.cookie
var queryString = {};
uri.replace(
new RegExp("([^?=&]+)(=([^&]*))?", "g"),
function($0, $1, $2, $3) { queryString[$1] = $3; }
);
但它对我不起作用,因为在cookie中我只有字符串中的params而没有任何域名。当然我可以在开头添加一些域名,但我不想创建这样一个丑陋的代码
答案 0 :(得分:1)
只需迭代并填写对象
var queryString = {};
uri.split(';').forEach(function(item) {
var parts = item.split('=');
queryString[parts[0].trim()] = parts[1].trim();
});
将数据作为JSON存储在cookie中似乎更容易。
答案 1 :(得分:0)
此功能正常:
function parseCookies (request) {
var list = {},
rc = request.headers.cookie;
rc && rc.split(';').forEach(function( cookie ) {
var parts = cookie.split('=');
list[parts.shift().trim()] = unescape(parts.join('='));
});
return list;
}
答案 2 :(得分:0)
使用标准querystring.parse与';'作为分隔符。