Node.js cookie分析器返回编码的字符

我正在使用cookie分析器给用户一个签名的cookie,但我手动解码他们有问题。 服务器用隐藏的hex代码返回cookies(我猜?)。 例:

app.use(cookieParser('bar')); ... res.cookie('nickname', 'foo', { signed: true }); 

然后我有奇怪的%3A字符nickname=s%3Afoo.FHkzIYqqvAuLEKKzpcNGhMjZQ0G88QpHNtxycPd0GFE ,我无法解码

 cookieParser.signedCookie('s%3Afoo.FHkzIYqqvAuLEKKzpcNGhMjZQ0G88QpHNtxycPd0GFE', 'bar') 

返回相同的string。 当我将%3A更改为:hex编码?)时

 cookieParser.signedCookie('s:foo.FHkzIYqqvAuLEKKzpcNGhMjZQ0G88QpHNtxycPd0GFE', 'bar') 

我得到了foo – 正确的价值。 有谁知道如何自动处理? 非常感谢您的帮助。

你得到的string是urlencoded ( RFC 3986 ),这意味着你需要解码它,然后才能正常使用它。 ( 注意:维基百科将此列为“百分比编码”

JavaScript中的decode命令是unescape,但从JavaScript 1.5开始,此命令已过时,您应该使用decodeURI或decodeURIComponent 。

使用这些命令的语法如下所示:

UNESCAPE

  var foo = "Hello%20World"; // encoded string var bar = unescape("Hello%20World"); console.log(bar);