Обработка сеансов без файлов cookie и перезаписи URL
У меня есть старый веб-сайт (сервлеты, JSP и Struts). В настоящее время управление сеансами осуществляется с помощью файлов cookie. Я хотел изменить дизайн этого сайта, чтобы сделать браузер независимым.
Я знаю, что есть альтернатива - перезапись URL, однако я не могу переписать (закодировать) все URL в моем приложении.
Я ищу решение, которое не должно сильно влиять на мой код. Пожалуйста, предложите мне, если у кого-нибудь есть реальное решение. Это будет очень полезно для меня.
С уважением, Lokesh Rangineni.
3 ответа
Это не имеет никакого смысла. Просто используйте переписывание URL. В противном случае вы в конечном итоге в изобретении HttpSession
концепция. Вам нужно изменить каждую строку в вашем коде, который использует HttpSession
, Это потребует гораздо больше времени, чем исправление вашего веб-приложения для использования перезаписи URL. Укуси пулю и прими это как усвоенный урок, чтобы ты не совершал ту же ошибку, не переписывая URL для будущих проектов, для которых требуется поддержка браузеров, которые не поддерживают куки.
Насколько я могу представить, существует только одна третья опция, кроме маркера сессии в URL или Cookie, которая настолько грязна и непрактична, что я бы не рекомендовал ее;) Но здесь мы идем:
Иметь скрытое поле формы на каждой странице с маркером сеанса, и каждый запрос к серверу должен быть отправкой формы, включающей значение скрытых полей.
С моей точки зрения, куки уже являются лучшим решением при оптимизации только для независимости браузера (исключая неявные сеансы через GET).
Перепишите все a.href с помощью javascript, чтобы добавить хеш сессии в качестве параметра.
Это не должно быть вашим решением, если вы стремитесь к истинной независимости браузера, так как куки более распространены, чем поддержка javascript. Большие куски данных могут храниться в LocalStorage.
sessionStorage.setItem("key", "value");
а также
var key_value = sessionStorage.getItem("key");
Легко настроить и значительно быстрее для больших данных сеанса на стороне клиента. Но вам все равно придется отправлять некоторые данные на сервер через вызовы POST/GET AJAX, чтобы фактически отслеживать сеанс на стороне сервера.
Куки должны быть друзьями, а не врагами.