Когда файлы cookie предпочтительнее сеансов? - PullRequest
1 голос
/ 08 июля 2011
public class ServletDemo extends HttpServlet{

    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws IOException{

        response.setContentType("text/html");
        PrintWriter pw = response.getWriter();

        Cookie cookie = new Cookie("url","mkyong dot com");
        cookie.setMaxAge(60*60); //1 hour
        response.addCookie(cookie);

        pw.println("Cookies created");
    }
}

Я вижу концепцию Java Cookies.В cookie-файлах много всего, используйте его, когда нужно хранить небольшие данные на стороне клиента.

Но не могли бы вы сказать, когда мы должны использовать Cookies точно ??когда куки предпочтительнее сеансов ??

Ответы [ 3 ]

2 голосов
/ 08 июля 2011

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

Когда вы говорите «сессия», я подозреваю, что вы имеете в виду HttpSessionКонтейнеры сервлетов будут управлять для вас.На самом деле вполне вероятно, что HttpSession поддерживается с помощью cookie: cookie просто содержит какой-то ключ к таблице сеансов.

Такая схема передачи некоторого уменьшенного объема данных обратно в браузер и отслеживания основных данных сервером также довольно распространена.Иногда люди используют все три: cookie для, скажем, небольших вещей, HttpSession в качестве удобного кэша и базу данных для вещей, которые им действительно нужны.

Есть много факторов, которые нужно учитывать, вот несколько:

  • Сколько данных целесообразно отправлять в куки, слишком много вещей будет работать медленно.
  • Насколько это безопасно?Серверы часто собирают намного больше данных, чем пользователь ввел в этом сеансе, насколько мы уверены, что что-то чувствительное не может быть взломано или прочитано, если мы отправим его обратно в браузер в виде файла cookie?
  • Насколько надежны нашивыбор механизма сессии?Потерять браузер, потерять ту 5к бронь, которую мы собирались купить?Потерять HttpSession на сервере?Возможно, тот же результат?(Некоторые серверы приложений имеют репликацию сеансов, но это накладные расходы).

Лично я нахожу, что обычно HttpSession API настолько удобен, что я никогда не решаю использовать куки.Мое эмпирическое правило гласит: «если его легко создать заново, сохраните его в HttpSession, в противном случае убедитесь, что оно сохраняется в базе данных, при необходимости создайте базу данных специально для управления состоянием (и не забывайте о ведении этой базы данных).

Примеры воссоздаваемых вещей: Предметы, извлеченные из базы данных (мы всегда можем получить их снова), вещи, которые пользователь не будет возражать против повторного ввода (скажем, несколько критериев поиска).на 17 странице заполнена страховая заявка.

1 голос
/ 08 июля 2011

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

  • , когда вам нужна некоторая информация о клиенте, и эта информация должна сохраняться в течение нескольких сеансов клиента, даже если пользователь закрывает свой браузер.Например, при автоматическом входе в систему используются файлы cookie: при первом запросе сеанса клиента файл cookie отправляется, и веб-сайт, таким образом, может идентифицировать пользователя.
  • , когда вам нужно поделиться некоторой информацией между даннымимежду несколькими веб-приложениями, если они все обслуживаются из одного домена.Например, единый вход может использовать куки.Первое приложение аутентифицирует пользователя и устанавливает cookie-токен, который отправляется второму приложению.второе приложение может затем использовать этот файл cookie для автоматической аутентификации пользователя.
1 голос
/ 08 июля 2011

Файлы cookie менее безопасны, чем сеансы.

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

Файлы cookie могут разрабатываться быстрее, поскольку на сервере не настроены базы данных сеансов и т.решение более низкого качества, если вы заботитесь о дизайне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...