【问题标题】:what's the condition of session creation [duplicate]会话创建的条件是什么[重复]
【发布时间】:2016-01-19 14:43:03
【问题描述】:

对此有两种看法。

  1. 如果我们禁用 cookie,服务器将创建会话并像这样 (http://localhost/login.jsp;jsessionid=07D00E8942B11CA1063735D38B4554DF) 重写 url 以跟踪请求会话;
  2. 如果启用 cookie,服务器将创建会话并设置响应头(Set-Cookie:JSESSIONID=07D00E8942B11CA1063735D38B4554DF)。

意见1,当服务器收到请求时,它会解析jsessionid,并创建一个会话(我不确定这个会话是在这里创建的)

现在,我启用 cookie,and delete all explorer's cookie 请求我提到的 url。我猜会话 id 是在 url 中传递的 .但是,服务器创建一个新会话并且ID不同。

所以,我很困惑服务器何时会创建一个新会话。我们可以控制会话创建的行为吗?

【问题讨论】:

    标签: java jsp jakarta-ee cookies


    【解决方案1】:

    JSESSIONID cookie 在创建会话时创建/发送。 Session 是在您的代码第一次调用 request.getSession() 或 request.getSession(true) 时创建的。

    在您编写会话相关代码的地方放置一个断点以获得更好的想法。

    不知道你要处理什么案子!!通常,在 url 中传递 JSESSIONID 并不是一个好习惯。有一次我想在移动应用和网络应用之间共享会话。

    【讨论】:

    • 感谢分享。我想在我的应用程序和 webview 之间共享会话。如果我们在 url 中传递了 jsessionid,服务器无法使用我们传递的 id 创建会话?@bmt
    • 它应该和我之前做的一样。试试request.getSession(false)。需要会话吗?
    • 我有一些新结果。如果我们在 url 中传递一个 jsessionid,当我们尝试 request.getSession() 时,如果 sessionid 有效,此方法将返回一个会话,否则它将返回一个新会话使用不同的会话 id;如果我们尝试 request.getSession(true),它与 ​​up 相同;否则 request.getSession(false) 将返回会话或 null。如果我们要传递 jsessionid,我们必须在每个链接。我猜我们传递jsessionid时服务器不会设置cookie,因为它认为我们的客户端不支持cookie。如果我们不传递jsessionid,服务器将设置cookie:jsessionid = sessionid.thanks
    猜你喜欢
    • 2017-10-17
    • 1970-01-01
    • 1970-01-01
    • 2023-02-02
    • 2019-08-25
    • 1970-01-01
    • 2019-04-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多