Node.js cookie-parser returns 编码字符
Node.js cookie-parser returns encoded characters
我正在使用 cookie-parser 为用户提供一个签名的 cookie,但我在手动解码它们时遇到了问题。服务器 returns 带有隐藏十六进制代码的 cookie(我猜?)。示例:
app.use(cookieParser('bar'));
...
res.cookie('nickname', 'foo', { signed: true });
然后我有一个带有奇怪 %3A
个字符 nickname=s%3Afoo.FHkzIYqqvAuLEKKzpcNGhMjZQ0G88QpHNtxycPd0GFE
的 cookie,我无法解码它
cookieParser.signedCookie('s%3Afoo.FHkzIYqqvAuLEKKzpcNGhMjZQ0G88QpHNtxycPd0GFE', 'bar')
returns 相同的字符串。当我将 %3A
更改为 :
(十六进制编码?),如
cookieParser.signedCookie('s:foo.FHkzIYqqvAuLEKKzpcNGhMjZQ0G88QpHNtxycPd0GFE', 'bar')
我得到了 foo
- 正确的值。有谁知道如何自动处理它?非常感谢您的帮助。
您返回的字符串是 urlencoded ( RFC 3986 ) 这意味着您需要对其进行解码才能正常使用它。 (注意:维基百科将此列为 'Percent Encoding')
JavaScript中的解码命令改为unescape however as of JavaScript 1.5, this command is deprecated and you should use decodeURI or decodeURIComponent。
使用这些命令的语法如下:
unescape
var foo = "Hello%20World"; // encoded string
var bar = unescape("Hello%20World");
console.log(bar);
解码URI
var foo = "Hello%20World"; // encoded string
var bar = decodeURI("Hello%20World");
console.log(bar);
decodeURIComponent
var foo = "Hello%20World"; // encoded string
var bar = decodeURIComponent("Hello%20World");
console.log(bar);
以下图表来自w3schools.com
Windows-1252 和 UTF-8 编码参考
ASCII 控制字符编码参考
我正在使用 cookie-parser 为用户提供一个签名的 cookie,但我在手动解码它们时遇到了问题。服务器 returns 带有隐藏十六进制代码的 cookie(我猜?)。示例:
app.use(cookieParser('bar'));
...
res.cookie('nickname', 'foo', { signed: true });
然后我有一个带有奇怪 %3A
个字符 nickname=s%3Afoo.FHkzIYqqvAuLEKKzpcNGhMjZQ0G88QpHNtxycPd0GFE
的 cookie,我无法解码它
cookieParser.signedCookie('s%3Afoo.FHkzIYqqvAuLEKKzpcNGhMjZQ0G88QpHNtxycPd0GFE', 'bar')
returns 相同的字符串。当我将 %3A
更改为 :
(十六进制编码?),如
cookieParser.signedCookie('s:foo.FHkzIYqqvAuLEKKzpcNGhMjZQ0G88QpHNtxycPd0GFE', 'bar')
我得到了 foo
- 正确的值。有谁知道如何自动处理它?非常感谢您的帮助。
您返回的字符串是 urlencoded ( RFC 3986 ) 这意味着您需要对其进行解码才能正常使用它。 (注意:维基百科将此列为 'Percent Encoding')
JavaScript中的解码命令改为unescape however as of JavaScript 1.5, this command is deprecated and you should use decodeURI or decodeURIComponent。
使用这些命令的语法如下:
unescape
var foo = "Hello%20World"; // encoded string
var bar = unescape("Hello%20World");
console.log(bar);
解码URI
var foo = "Hello%20World"; // encoded string
var bar = decodeURI("Hello%20World");
console.log(bar);
decodeURIComponent
var foo = "Hello%20World"; // encoded string
var bar = decodeURIComponent("Hello%20World");
console.log(bar);
以下图表来自w3schools.com