mirror of
https://github.com/thinkjs/thinkjs.git
synced 2026-01-25 14:42:47 +00:00
38 lines
930 B
JavaScript
38 lines
930 B
JavaScript
/**
|
|
* 解析cookie
|
|
* @param {[type]} str [description]
|
|
* @param {[type]} opt [description]
|
|
* @return {[type]} [description]
|
|
*/
|
|
exports.parseCookie = function(str, opt) {
|
|
opt = opt || {};
|
|
var obj = {}
|
|
var pairs = str.split(/[;,] */);
|
|
var dec = opt.decode || decodeURIComponent;
|
|
pairs.forEach(function(pair) {
|
|
var eq_idx = pair.indexOf('=')
|
|
|
|
// skip things that don't look like key=value
|
|
if (eq_idx < 0) {
|
|
return;
|
|
}
|
|
|
|
var key = pair.substr(0, eq_idx).trim()
|
|
var val = pair.substr(++eq_idx, pair.length).trim();
|
|
|
|
// quoted values
|
|
if ('"' == val[0]) {
|
|
val = val.slice(1, -1);
|
|
}
|
|
|
|
// only assign once
|
|
if (undefined == obj[key]) {
|
|
try {
|
|
obj[key] = dec(val);
|
|
} catch (e) {
|
|
obj[key] = val;
|
|
}
|
|
}
|
|
});
|
|
return obj;
|
|
}; |