【问题标题】:Cookies created in JSP page are not available in Servlet, only the JSESSIONID cookie is available在 JSP 页面中创建的 cookie 在 Servlet 中不可用,只有 JSESSIONID cookie 可用
【发布时间】:2016-08-02 07:40:37
【问题描述】:

我创建了一个 JSP 页面,它创建了两个 cookie 并将其添加到响应对象。该页面有一个调用 servlet 对象的提交按钮。并且这个servlet 会尝试访问之前JSP 页面存储的cookie,但它只能访问JSESSIONID cookie。这是如何引起的,我该如何解决?

【问题讨论】:

    标签: jsp servlets cookies


    【解决方案1】:

    当您没有明确设置 cookie 路径时会发生这种情况。然后它将默认为请求 URI 中的当前文件夹。只有当 cookie 的路径与当前请求的 URI 匹配时,浏览器才会发回 cookie。

    因此,假设您的 JSP 具有 URI /pages/some.jsp,那么在 JSP 中创建的任何 cookie 都将具有 /pages 的默认路径。这意味着浏览器只会在任何匹配/pages/* 的请求上发回cookie。如果您的 servlet 具有 URI /someServlet,那么它将不会检索 cookie。它只会检索路径为/someServlet/ 的cookie。

    如果你想让你的 cookie 应用到整个应用程序,那么你需要将路径显式设置为/

    Cookie cookie = new Cookie(name, value);
    cookie.setPath("/");
    response.addCookie(cookie);
    

    这也将在运行在不同(子)文件夹上的任何 servlet 或 JSP 中可用。

    【讨论】:

      猜你喜欢
      • 2019-06-23
      • 1970-01-01
      • 2016-02-11
      • 2016-01-04
      • 1970-01-01
      • 2015-07-24
      • 2012-03-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多