Tomcat: длина печенья - PullRequest
       11

Tomcat: длина печенья

0 голосов
/ 17 января 2011

Я создаю и прилагаю кулинарию для своего приложения с некоторой полезной информацией.

Но эта информация после этого недоступна.

Проблема в том, что, когда я пытаюсь прикрепить слишком много информации, мой файл cookie не передается.Когда я пытаюсь прикрепить немного информации, все в порядке.

Мои вопросы:

  1. Какова максимальная длина значений cookie?
  2. Если это ошибка,любой обходной путь для Tomcat 5.5?

Я создаю свой файл cookie, используя следующий код:

Cookie cookie = new Cookie(key, value);
cookie.setPath("/");
response.addCookie(cookie);

И для получения своего файла cookie я использую этот код:

private static String getCookieValue(HttpServletRequest request, String name) {
    boolean found = false;
    String result = null;
    Cookie[] cookies = request.getCookies();
    if (cookies != null) {
        int i = 0;
        while (!found && i < cookies.length) {
            if (cookies[i].getName().equals(name)) {
                found = true;
                result = cookies[i].getValue();
            }
            i++;
        }
    }

    return (result);
}

1 Ответ

1 голос
/ 17 января 2011

Относительно 1) «Какова максимальная длина значений cookie?»

Не существует обязательного максимума, просто рекомендация в RFC 2109 :

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

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

Что касается хранения больших значений на стороне клиента, dojox.storage пришло мне в голову (хотя это javascript, он показывает их подход к этой общей проблеме). Они абстрагируют различные несовместимые способы хранения больших наборов данных в клиенте - например, используя один из доступных

  • AirDBStorageProvider,
  • AirEncryptedLocalStorageProvider,
  • AirFileStorageProvider,
  • FlashStorageProvider,
  • GearsStorageProvider,
  • WhatWGStorageProvider.

Если у вас есть контроль над клиентами, вы можете пойти по маршруту HTML5 с localstorage , который обеспечивает максимум 5 МБ локального клиентского пространства.

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

...