我有一个旧网站(servlet、JSP 和 Struts)。目前,会话管理使用 cookie 处理。我想重新设计这个网站以使浏览器独立。
我知道有一个替代的 URL 重写,但是,这对我来说重写(编码)我的应用程序中的所有 URL 是不可行的。
我正在寻找一种不会对我的代码产生太大影响的解决方案。如果有人有可行的解决方案,请建议我。这对我会有很大的帮助。
我有一个旧网站(servlet、JSP 和 Struts)。目前,会话管理使用 cookie 处理。我想重新设计这个网站以使浏览器独立。
我知道有一个替代的 URL 重写,但是,这对我来说重写(编码)我的应用程序中的所有 URL 是不可行的。
我正在寻找一种不会对我的代码产生太大影响的解决方案。如果有人有可行的解决方案,请建议我。这对我会有很大的帮助。
这是没有意义的。只需使用 URL 重写。否则,您基本上最终会重新发明整个HttpSession
概念。您需要更改代码中使用HttpSession
. 这将比修复您的 web 应用程序以利用 URL 重写需要更多的时间。咬紧牙关,把这当作一个教训,这样你就不会犯同样的错误,即不为未来需要支持不支持 cookie 的浏览器的项目进行 URL 重写。
从我的角度来看,cookie 已经是仅针对浏览器独立性进行优化(不包括通过 GET 的隐式会话)的最佳解决方案。
用 javascript 重写所有 a.href 以添加会话哈希作为参数。
如果您追求真正的浏览器独立性,那么这不应该是您的解决方案,因为 cookie 比 javascript 支持更广泛。更大的数据块可以存储在 LocalStorage 中。
sessionStorage.setItem("key", "value");
和
var key_value = sessionStorage.getItem("key");
对于较大的客户端会话数据,易于设置且速度更快。但是您仍然必须通过 POST/GET AJAX 调用向服务器发送一些数据,以实际跟踪服务器端的会话。
饼干应该是朋友,而不是敌人。
据我所知,除了 URL 或 Cookie 中的会话令牌之外,只有三分之一的选项是如此肮脏和不切实际,我不会推荐它;)但是我们开始吧:
在带有会话令牌的每个页面上都有一个隐藏的表单字段,并且对服务器的每个请求都必须是包含隐藏字段值的表单提交。