js-cookie не кодирует значение так же, как php setcookie

Когда я создаю файл cookie, используя этот https://github.com/js-cookie/js-cookie

Это содержимое моей переменной crypt..

s192aBszcV7NPrR8KpQbl4u/hkOOmMBzPg2mAhGlZB1/nAcus=0


Затем установка файла cookie с помощью js-cookie..

Cookies.set('_siteauth',crypt, {
   expires: 1,
   path: '/'
});

Это значение файла cookie js set...

s192aBszcV7NPrR8KpQbl4u/hkOOmMBzPg2mAhGlZB1/nAcus=0


Итак, если я установлю ту же переменную с помощью php setcookie..

setcookie('_siteauth', $crypt, time() + 86400, '/');

Значение куки это..

s192aBszcV7NPrR8KpQbl4u%2FhkOOmMBzPg2mAhGlZB1%2FnAcus%3D

Вот как я ожидаю, что значение cookie должно быть. Закодировано.


Но в документации для js-cookie о кодировании сказано следующее: https://github.com/js-cookie/js-cookie#encoding, и я удивлен, что значение набора js-cookie вообще не кодируется.

Может ли кто-нибудь пролить свет на это, пожалуйста, или я что-то упустил с плагином js-cookie?


person joshmoto    schedule 01.06.2019    source источник


Ответы (1)


Как сказано в документации по js-cookie:

Этот проект соответствует RFC 6265. Все специальные символы, которые не разрешены в cookie-name или cookie-value, кодируются шестнадцатеричным эквивалентом UTF-8 с использованием процентное кодирование.

[...]

Обратите внимание, что стратегия кодирования/декодирования по умолчанию предназначена для взаимодействия только между файлами cookie, которые читаются/записываются js-cookie. Чтобы переопределить стратегию кодирования/декодирования по умолчанию, вам нужно использовать конвертер.

(Выделение мое.)

Согласно RFC 6265, значения cookie могут содержать любые символы из набора !#$%&'()*+-./:<=>?@[]^_`{|}~, а также цифры (0-9) и буквы (a-zA-Z).

Обратите внимание, что и /, и = являются допустимыми символами в значениях файлов cookie.

Кроме того, не указан механизм кодирования или экранирования:

Семантика значения cookie не определяется этим документом.

Чтобы максимизировать совместимость с пользовательскими агентами, серверам, которые хотят хранить произвольные данные в значении cookie, СЛЕДУЕТ кодировать эти данные, например, с использованием Base64 [RFC4648].

Использование процентного кодирования для значений cookie не стандартизировано. Неудивительно, что разные библиотеки предлагают разные схемы кодирования значений cookie. В частности, js-cookie не был разработан для совместимости с какой-либо схемой кодирования, кроме своей собственной.

person melpomene    schedule 01.06.2019