Запретить кодирование URL в ответном наборе cook ie - nodejs - PullRequest
1 голос
/ 01 августа 2020

В моем приложении node я пытаюсь изменить значение ie cook с помощью приведенного ниже кода. Но когда я устанавливаю некоторые значения cook ie, я вижу, что они изменены в моем заголовке ответа браузера. Код узла:

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. ie. Добавляется «25».

Я думаю, это происходит из-за того, что URL-адрес закодирован. Я не хочу, чтобы это произошло, так как он меняет отправляемое мной значение, и у меня нет контроля, чтобы проанализировать его, прежде чем браузер установит его в cook ie.

1 Ответ

1 голос
/ 01 августа 2020

вы должны установить функцию encode:

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

по умолчанию encode функция encodeURLComponent.

...