js-cookie не кодирует значение так же, как php setcookie - PullRequest
0 голосов
/ 01 июня 2019

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

Это содержимое моей криптографической переменной ..

s192aBszcV7NPrR8KpQbl4u/hkOOmMBzPg2mAhGlZB1/nAcus=0

Затем установите cookie с помощью js-cookie ..

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

Это значение cookie, установленное js ...

s192aBszcV7NPrR8KpQbl4u/hkOOmMBzPg2mAhGlZB1/nAcus=0

Поэтому, если я установлю ту же переменную, используя php setcookie ..

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

Значение cookie будет таким:

s192aBszcV7NPrR8KpQbl4u%2FhkOOmMBzPg2mAhGlZB1%2FnAcus%3D

Именно так и должно быть значение cookie.Кодированный.

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

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

1 Ответ

0 голосов
/ 01 июня 2019

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

Этот проект соответствует RFC 6265 .Все специальные символы, которые не допускаются в имени файла cookie или значении файла cookie, кодируются шестнадцатеричным эквивалентом каждого из них, используя процентное кодирование .

[...]

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

(выделение мин.)

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

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

Также не указан механизм кодирования или экранирования:

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

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

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

...