В моем приложении узла я пытаюсь изменить значение файла 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
.
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript/JS) и его различных диалектах/реализациях (кроме ActionScript). Имейте в виду, что JavaScript — это НЕ то же самое, что Java! Включите все ярлыки, относящиеся к вашему вопросу; например, [node.js], [jQuery], [JSON], [ReactJS], [angular], [ember.js], [vue.js], [typescript], [svelte] и т. д.
encode
является функцияencodeURLComponent
. когда мы устанавливаемencode: v => v
, мы говорим просто вернуть ввод и не изменять его. Вы можете прочитать больше здесь.