Не может получить значение от cookie в Java. Значение содержит запятые.

У меня есть проблема с получением значения от cookie, который содержит запятые. Это возвращает не полную строку, но строку, отключенную к первой запятой. Например:

// cookie value = var1,var2,var3
String cookieVal = cookie.getValue();
//cookieVal now is "var1" instead of "var1,var2,var3"

и

// cookie value = var1=var2=var3
String cookieVal = cookie.getValue();
//cookieVal now is "var1=var2=var3"

Что я делаю неправильно.

6
задан Caio Cunha 3 August 2012 в 19:54
поделиться

3 ответа

Взгляните на Документацию по куки. Здесь сказано :

Этот класс поддерживает обе версии 0. (Netscape) и версия 1 (RFC). 2109) спецификации cookie-файлов. По адресу по умолчанию, cookie-файлы создаются с использованием Версия 0 для обеспечения наилучшего совместимость.

И если вы увидите метод setValue, вы найдете это

В куки-файлах версии 0 значения не должны содержать пробелов, скобок, круглых скобок, равнозначных знаков, запятых, двойных кавычек, косых черт, вопросительных знаков, на знаках, двоеточиях и точках с запятой. Пустые значения могут вести себя не одинаково во всех браузерах.

EDIT: Просто прочитай про гугл. Может быть, попробуйте установить версию в 1 и посмотреть, как она работает.

5
ответ дан 17 December 2019 в 00:09
поделиться

Запятая является частью определения значения http-заголовка, поэтому запятые для кодирования URL в значении вашего файла cookie .

URLEncoder.encode(cookieValue);

Я обнаружил следующее:

«Эта строка [значение файла cookie] представляет собой последовательность символов, исключая точку с запятой , запятую и пробел. Если есть необходимость разместить такие данных в имени или значении рекомендуется использовать какой-либо метод кодирования, например стиль URL% XX , хотя кодировка не определена или не требуется »

В RFC говорится :

Неформально заголовок ответа Set-Cookie включает набор токенов - Cookie:, за которым следует список из одного или нескольких файлов cookie, разделенных запятыми. Каждый файл cookie начинается с NAME = Пара VALUE, за которой следует ноль или более пар атрибут-значение, разделенных точкой с запятой.

Обновление: После того, как вы пояснили, что анализируете файл cookie из Google: я просмотрел все мои файлы cookie __utmX, и ни один из них не содержит запятых. В качестве разделителя используется | или закодированный по URL :

2
ответ дан 17 December 2019 в 00:09
поделиться

Как сделать заголовок элементом списка с различными стилями, такими как

<ul>
 <li class="heading">heading</li>
 <li>list item</li>
 <li>list item</li>
 <li>list item</li>
 <li>list item</li>
</ul>

и CSS

ul .heading {font-weight: normal; list-style: none;}

дополнительно, используйте сброс CSS для установки полей и набивок прямо на ul и li. вот хороший CSS сброса. после сброса полей и набивок можно применить некоторое поле к элементам списка, отличным от элемента с классом заголовка, для их отступа.

-121--1041777-

Я не думаю, что есть такая вещь, и я не думаю, что это была бы хорошая идея: обычно вам приходится обрабатывать не только установки, но и некоторые обновления (скажем: новая версия с функциями) или правильная инициализация некоторых ресурсов.

Для ресурсов лучший способ - проверить их напрямую.

Для этой версии я использую базу данных, это так просто.

-121--1105240-

Действительно сохранить набор в файле cookie? Файлы cookie IMHO не должны использоваться для хранения данных отдельно от идентификаторов. Место хранения данных должно выполняться на стороне сервера, когда это возможно.

0
ответ дан 17 December 2019 в 00:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: