#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;
, а затем на =
, если вам нужен такой уровень детализации.