提问者:小点点

阻止响应集Cookie-NodeJS中的url编码


在我的节点应用程序中,我试图用下面的代码更改我的cookie值。 但是当我设置一些cookie值时,我看到它在浏览器的响应头中被修改了。 节点代码:

let nonEncodedString ='s%3A9Q8kumq4BgrHtJPM90ebhhl6OqChsxdp.x0uf93Hk5I03KWeF%2FFT3TM64riv3QAs'
res.cookie('connect.sid', nonEncodedString , { maxAge, httpOnly: true, overwrite: true });

但我得到的标题是

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。 例如,“25”正在被添加。

我认为它的发生是因为它得到了URL编码。 我不希望发生这种情况,因为它改变了我发送的值,而且在浏览器将它设置在cookie中之前,我没有对它进行解析的控制。


共1个答案

匿名用户

应设置encode函数:

  res.cookie('connect.sid', nonEncodedString,
    { maxAge,
      httpOnly: true,
      overwrite: true,
      encode: v => v
    })

默认的Encode函数是EncodeURLComponent