【问题标题】:Why can't I get the JSESSIONID cookie in GWT on the client side?为什么我无法在客户端的 GWT 中获取 JSESSIONID cookie?
【发布时间】:2012-01-03 22:56:31
【问题描述】:

我在 index.jsp 页面中有我的 GWT 代码,当我查看页面信息(安全/cookies)时,我看到分配给“subdomain.mysite.com”的 JSESSIONID cookie。

在我的客户端代码中,我这样做:

Window.alert("cookies=" + Cookies.getCookieNames().toString);

我看到分配给“mysite.com”的两个 cookie,但我没有看到 JSESSIONID。该页面的当前 url 是 'subdomain.mysite.com' - 它不应该给我 cookie 吗? 当我刷新或在点击事件上显示 cookie 时,我仍然看不到 JSESSIONID cookie。

为什么我不能在客户端获取它?

【问题讨论】:

    标签: java session gwt cookies


    【解决方案1】:

    您的应用程序服务器是否配置为在 JSESSIONID cookie 上设置 HTTPOnly 标志?如果是这样,客户端代码将无法看到它

    https://www.owasp.org/index.php/HttpOnly

    设置 HTTPOnly 标志通常是一种很好的安全做法 - 您能否阐明为什么要在客户端代码中访问 JSESSIONID cookie?

    【讨论】:

    • 我计划将会话 ID 作为服务器调用的一部分传递,以节省服务器端的一些重新编码工作。
    • 您不需要手动传递会话 ID 作为服务器调用的一部分,因为它会自动附加到 HTTP 请求。
    • 是真的……我在想如果我把它传进去会更难欺骗……我想我太努力了。
    【解决方案2】:

    如果在 cookie 上设置了 HTTPOnly 标志,确实会发生这种情况,正如 Chi 所解释的那样。如果您的唯一目的是在 JavaScript 上下文中获取当前会话 ID,那么您可以让 JSP/EL 将其打印为 JS 变量:

    <script>var jsessionid = '${pageContext.session.id}';</script>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-19
      • 2022-08-24
      • 2021-11-02
      • 2020-04-18
      • 1970-01-01
      • 2017-12-07
      • 1970-01-01
      相关资源
      最近更新 更多