java - 我该怎么办 session URL 很长,我无法附加 JSESSIONID=389729387392。解决方案是什么?

标签 java servlets cookies

我得到了答案:如果我禁用了cookie,那么使用URL重定向我可以传递JSESSIONID,但我的URL已经很长,因为我使用它有约束的GET方法。那怎么办 我应该使用我的 session 吗?我希望我的应用程序非常安全。 这是在 GOOGLE 面试中向我的 friend 提出的问题之一。

最佳答案

除了使用单字母参数名称(例如 ?a=value1&b=value2&c=value3 或使用类似 RESTFul 的 URL(即只有路径信息,没有查询参数,例如 /value1)/value2/value3,可通过 servlet 中的 HttpServletRequest#getPathInfo() 访问)而不是 ?name1=value1&name2=value2&name3=value3,您还可以考虑对查询进行 Gzip 和 Base64 编码字符串,使其变得更短。JavaScript 和 Java 都能够对其进行(解)压缩和(d)e(n)编码。您最终可以在压缩/编码之前将查询字符串格式化为 JSON,如果是这样,它会更短数组/集合/映射。

也就是说,您确定请求 URL 通常那么长(假设超过 255 个字符),不友好吗?为什么您需要传递那么多信息?他们应该维护客户端状态吗?如果是这样,您不应使用 URL,而应使用服务器端已与 jsessionid Cooke 关联的 HttpSession 实例。使用HttpSession#setAttribute()在 session 中存储一些信息并使用 HttpSession#getAttribute()来检索它。

关于java - 我该怎么办 session URL 很长,我无法附加 JSESSIONID=389729387392。解决方案是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2066000/

相关文章:

java - Quickblox 登录无法使用 3.3.1 sdk

java - 从存储库加载后实例化泛型类

java - 从 Excel 坐标放置 anylogic 代理

java - 将 OutputStream 与 InputStream 连接起来

java - Eclipse:动态Web项目是否必须在WEB-INF中包含OJDBC.jar文件?

Asp.net MVC 核心错误请求 - 请求太长 HTTP 错误 400。请求 header 的大小太长

java - RxJava android mvp 单元测试 NullPointerException

java - 如何解决 "Unhandled exception type ClassNotFoundException"和 "Vector is a raw type"错误?

javascript - 设置cookie时返回base64编码值(Javascript)

PHP cURL 不存储 session cookie...如何解决这个问题?