防止 url 在响应集 cookie 中编码 - nodejs
Prevent url encode in response set cookie - nodejs
在我的节点应用程序中,我尝试使用以下代码更改我的 cookie 值。但是当我设置一些 cookie 值时,我在浏览器的响应 header 中看到它被修改了。
节点代码:
let nonEncodedString ='s%3A9Q8kumq4BgrHtJPM90ebhhl6OqChsxdp.x0uf93Hk5I03KWeF%2FFT3TM64riv3QAs'
res.cookie('connect.sid', nonEncodedString , { maxAge, httpOnly: true, overwrite: true });
但是我得到的header是
set-cookie: connect.sid=s%253A9Q8kumq4BgrHtJPM90ebhhl6OqChsxdp.x0uf93Hk5I03KWeF%252FFT3TM64riv3QAs; Max-Age=157680000; Path=/; Expires=Thu, 31 Jul 2025 11:28:35 GMT; HttpOnly
基本上
s%3A9Q8kumq4BgrHtJPM90ebhhl6OqChsxdp.x0uf93Hk5I03KWeF%2FFT3TM64riv3QAs
改为
s%253A9Q8kumq4BgrHtJPM90ebhhl6OqChsxdp.x0uf93Hk5I03KWeF%252FFT3TM64riv3QAs
。 IE。正在添加“25”。
我认为它正在发生,因为它正在 URL 编码。
我不希望这种情况发生,因为它改变了我发送的值,而且在浏览器将它设置到 cookie 之前我无法控制解析它。
你应该设置一个encode
函数:
res.cookie('connect.sid', nonEncodedString,
{ maxAge,
httpOnly: true,
overwrite: true,
encode: v => v
})
默认的 encode
函数是 encodeURLComponent
。
在我的节点应用程序中,我尝试使用以下代码更改我的 cookie 值。但是当我设置一些 cookie 值时,我在浏览器的响应 header 中看到它被修改了。 节点代码:
let nonEncodedString ='s%3A9Q8kumq4BgrHtJPM90ebhhl6OqChsxdp.x0uf93Hk5I03KWeF%2FFT3TM64riv3QAs'
res.cookie('connect.sid', nonEncodedString , { maxAge, httpOnly: true, overwrite: true });
但是我得到的header是
set-cookie: connect.sid=s%253A9Q8kumq4BgrHtJPM90ebhhl6OqChsxdp.x0uf93Hk5I03KWeF%252FFT3TM64riv3QAs; Max-Age=157680000; Path=/; Expires=Thu, 31 Jul 2025 11:28:35 GMT; HttpOnly
基本上
s%3A9Q8kumq4BgrHtJPM90ebhhl6OqChsxdp.x0uf93Hk5I03KWeF%2FFT3TM64riv3QAs
改为
s%253A9Q8kumq4BgrHtJPM90ebhhl6OqChsxdp.x0uf93Hk5I03KWeF%252FFT3TM64riv3QAs
。 IE。正在添加“25”。
我认为它正在发生,因为它正在 URL 编码。 我不希望这种情况发生,因为它改变了我发送的值,而且在浏览器将它设置到 cookie 之前我无法控制解析它。
你应该设置一个encode
函数:
res.cookie('connect.sid', nonEncodedString,
{ maxAge,
httpOnly: true,
overwrite: true,
encode: v => v
})
默认的 encode
函数是 encodeURLComponent
。