代码之家  ›  专栏  ›  技术社区  ›  giri

如何做会话URL很长,我不能附加jsessionid=389729387392。这有什么解决方案?

  •  0
  • giri  · 技术社区  · 15 年前

    我得到了答案,如果我禁用了cookie,那么使用url重定向,我可以传递jsessionid,但是我的url已经很长时间了,只要我使用get方法它有约束。然后如何 我应该使用我的会话吗?我希望我的应用程序非常安全。 这是我在谷歌采访中向朋友提出的问题之一。

    4 回复  |  直到 15 年前
        1
  •  2
  •   BalusC    15 年前

    除了使用一个字母的参数名称(例如 ?a=value1&b=value2&c=value3 或者使用类似url的restful(即仅使用pathinfo,不使用查询参数,例如 /value1/value2/value3 ,可通过 HttpServletRequest#getPathInfo() 在servlet中)而不是 ?name1=value1&name2=value2&name3=value3 还可以考虑对查询字符串进行gzip和base64编码,使其变短。JavaScript和Java都能够(DE)压缩和(D)E(n)编码它。您最终可以在压缩/编码之前在JSON中格式化查询字符串,如果是数组/集合/映射,它将更短。

    也就是说,您确定请求URL的长度通常不友好(假设超过255个字符)?你为什么要通过那个? 许多的 信息输入?他们应该保持客户状态吗?如果是这样,您不应该为此使用URL,但是 HttpSession 服务器端的实例已与JSessionID Cooke关联。使用 HttpSession#setAttribute() 在会话中存储一些信息并使用 HttpSession#getAttribute() 检索它。

        2
  •  2
  •   dparnas    15 年前

    据我所知,URL中jsessionid的主要问题是总长度。

    也许您应该更仔细地了解一下为什么URL的长度一开始就太长了。因为您已经准备好了一个会话,所以不可能将一些get参数移动到该会话。还有很多不同的方法来缩短网页的网址(la mod_rewrite)。

    在安全性方面,jsessionid与HTTP GET的可用性与HTTP POST相同。base64编码HTTP POST根本不是安全措施。获得更多安全性的最佳方法是通过tls/ssl加密传输通道,实际上启用了https。这将确保窃听(或中间人攻击)不会访问纯文本。

        3
  •  0
  •   Mihir Mathuria    15 年前

    如果您希望您的应用程序是安全密集型的,那么为什么要使用GET。使用帖子。这也会缩短URL长度。

    因此,根据HTTP协议,对URL长度没有最大长度限制。大多数情况下,浏览器会设置最大长度限制。尝试不同的浏览器

    你应该向面试官提出以上几点。他们可能对您评估整个系统并识别任何基本缺陷的能力更感兴趣。

        4
  •  0
  •   David    15 年前

    如果URL太长,则必须将该数据存储在其他地方。大多数网站都会将会话ID放在cookie中。