Файл cookie, имеющий значение «=»

#javascript

Вопрос:

Я должен проверить, существуют ли файлы cookie или нет, делая запрос. Проблема в том, что значение файла cookie содержит»=», например, для

….;имя пользователя=Имя=Знакомьтесь;….

Здесь имя файла cookie — «имя пользователя», а значение файла cookie — «Имя=Знакомство». Проблема в том, что я пытаюсь получить файлы cookie из document.cookies. Я получаю все файлы cookie после того, как взорвал результат, используя функцию разделения для «;».

Для получения значений я взрываю / разделяю каждое значение на»=», тогда это значение файла cookie будет только до первого имени.

Любые мысли о том, что я могу получить целое значение как Имя=Знакомьтесь.

спасибо, Знакомьтесь

Ответ №1:

 // when you get a cookie string: unescape(cookieData); // when you set a cookie string: escape(yourString);  

Ответ №2:

Если файл cookie устанавливается на стороне сервера, вам необходимо закодировать значение по URL-адресу, как если бы это была строка запроса. Если вы используете PHP с setcookie, это должно быть сделано автоматически для вас. На самом деле, любая приличная библиотека должна автоматически кодировать url-адреса значений файлов cookie для вас.

Единственный способ, которым значение файла cookie могло быть задано как имя пользователя=Имя=Встретиться,-это если вы отправляете заголовок Set-Cookie вручную.

Если вы дадите больше информации о том, как в первую очередь настраивается файл cookie, это поможет дать более точный ответ.

Ответ №3:

Существует несколько альтернатив для поиска одного файла cookie в известном формате из document.cookies. Вот упрощенный случай с использованием регулярного выражения.

 var expr = /(?:^|; )username=([^;] )/i; //match "username=some_string_that_string_may_have_more=_in_it". Capture the part after the leading =. Does not capture the trailing ; var cookie_match = document.cookie.match(expr); var cookie_val;  if (cookie_match) {  cookie_val = cookie_match[1]; }  //result should be cookie_val = "firstName=Meet"  

Конечно, вы можете получить все файлы cookie, разделив файл document.cookie, как вы делали выше, и если вы собираете большое количество файлов cookie или пишете оболочку для доступа к файлам cookie, это хорошая идея. Просто имейте в виду, что при использовании дополнительных файлов cookie файлы cookie будут выглядеть так:

 cookiename=cookiekey=cookievalueamp;key2=val2;   

Вы хотите использовать регулярное выражение или срез/индекс, чтобы убедиться, что вы разделяете каждый отдельный файл cookie только по первому знаку равенства. Затем вы можете получить отдельные пары имя/значение, разделив сначала на amp; , а затем на = , если вам нужен такой уровень детализации.