每个请求都有Java新会话?

雷安德夫

我遇到了一个问题,即当请求来自域名而不是本地主机时,会话变量不可用。例如,如果我设置一个用户变量:

request.getSession(true).setAttribute("user", user);
//Redirects to another html page or something...

当客户端提出另一个请求,而我尝试访问用户会话变量时,它返回null。

//Client makes another request to the server
request.getSession(true).getAttribute("user"); //returns null

我注意到,对于每个请求,都会设置一个新的JSESSIONID cookie,并且ID值会更改。这是否意味着每次客户端访问服务器时都会创建一个新会话?如何在客户端之间维护相同的会话,以便可以将对象存储在HttpSession中并可以访问它们?

我不知道这是否与任何事情有关,但是从雄猫管理器查看应用程序时,无论我是在同一浏览器窗口中使用该应用程序,还是不刷新该应用程序,会话数都继续增长。页面或其他任何内容。是否有另一个迹象表明正在对服务器的每个请求上创建一个新会话?

仅当从域名ex.example.com/app访问应用程序时才会发生这种情况。来自本地主机时,会话变量可以正常工作。

更新资料

我没有使用response.sendRedirect进行测试,并且会话变量在切换页面并向服务器发出另一个请求之前一直可用。这证实了我的怀疑,即每个请求都将创建一个新会话。它不是重定向那杀死会话,也不是任何新请求。我该如何预防?

雷安德夫

问题出在JSESSIONID cookie中的路径上。我仍然不知道为什么将其设置为tomcat应用程序路径/ tomcat-app-name /,但是我将web.xml中的cookie配置更改为:

<session-config>
  <cookie-config>
     <name>JSESSIONID</name>
     <path>/</path>
     <http-only>true</http-only>
     <secure>true</secure>
  </cookie-config>
</session-config>

现在,会话变量可以跨会话工作。当然,现在使用本地主机运行时,会话变量不起作用。相反,您可以在context.xml根上下文节点上设置sessionCookiePath:

我正在使用ubuntu服务器和tomcat7。对于tomcat7,可以在/etc/tomcat7/context.xml中找到context.xml。

<Context ... sessionCookiePath="/" > ... </Context>

现在,您不必在应用程序web.xml中配置JSESSIONID cookie,就应该能够在本地运行(如果您没有在本地计算机上更改该cookiepath)以及在服务器上运行。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

每个请求都有Java新会话吗?

来自分类Dev

php artisan服务每个请求的新会话

来自分类Dev

CDI-会话范围-每个请求范围的新会话范围

来自分类Dev

每个请求后的新会话,tomcat后端,apache前端

来自分类Dev

为什么每个请求都有DbContext?

来自分类Dev

Tomcat 7.1为来自同一客户端的每个请求创建新会话

来自分类Dev

为什么每个子组件都有角度的发送请求?

来自分类Dev

是否可以有不同的桌面会话,每个会话都有不同的设置?

来自分类Dev

Laravel Session在没有更新会话到期的情况下发出请求

来自分类Dev

每个请求具有不同Cookie域的Express会话?

来自分类Dev

每个请求都有新的sinatra对象,但仅初始化一次

来自分类Dev

如果每个请求都有一个改造实例会发生什么?

来自分类Dev

Laravel 刷新会话有一些例外

来自分类Dev

每个请求或每个用户的休眠会话数?

来自分类Dev

每个请求或每个用户的休眠会话数?

来自分类Dev

快速请求每个请求的更改会话

来自分类Dev

快速请求每个请求的更改会话

来自分类Dev

java 中的 BufferedOutputStream 有什么好处?不是每个 OutputStream 都有缓冲区吗?

来自分类Dev

新会话 ID 每次

来自分类Dev

tkinter:每个窗口都有相同的图标

来自分类Dev

每个页面都有单独的ckeditor模板

来自分类Dev

tkinter:每个窗口都有相同的图标

来自分类Dev

每个套接字都有文件吗?

来自分类Dev

每个标记都有不同的kml文件

来自分类Dev

保证每个都有返回值

来自分类Dev

下拉列表,每个项目都有图片

来自分类Dev

XSLT - 每个都有多个列表

来自分类Dev

每个对象都有相同的数组

来自分类Dev

启用本机加密(ASO)时,为什么在Oracle中的每个错误SQL请求上都有“校验和失败”的信息?

Related 相关文章

  1. 1

    每个请求都有Java新会话吗?

  2. 2

    php artisan服务每个请求的新会话

  3. 3

    CDI-会话范围-每个请求范围的新会话范围

  4. 4

    每个请求后的新会话,tomcat后端,apache前端

  5. 5

    为什么每个请求都有DbContext?

  6. 6

    Tomcat 7.1为来自同一客户端的每个请求创建新会话

  7. 7

    为什么每个子组件都有角度的发送请求?

  8. 8

    是否可以有不同的桌面会话,每个会话都有不同的设置?

  9. 9

    Laravel Session在没有更新会话到期的情况下发出请求

  10. 10

    每个请求具有不同Cookie域的Express会话?

  11. 11

    每个请求都有新的sinatra对象,但仅初始化一次

  12. 12

    如果每个请求都有一个改造实例会发生什么?

  13. 13

    Laravel 刷新会话有一些例外

  14. 14

    每个请求或每个用户的休眠会话数?

  15. 15

    每个请求或每个用户的休眠会话数?

  16. 16

    快速请求每个请求的更改会话

  17. 17

    快速请求每个请求的更改会话

  18. 18

    java 中的 BufferedOutputStream 有什么好处?不是每个 OutputStream 都有缓冲区吗?

  19. 19

    新会话 ID 每次

  20. 20

    tkinter:每个窗口都有相同的图标

  21. 21

    每个页面都有单独的ckeditor模板

  22. 22

    tkinter:每个窗口都有相同的图标

  23. 23

    每个套接字都有文件吗?

  24. 24

    每个标记都有不同的kml文件

  25. 25

    保证每个都有返回值

  26. 26

    下拉列表,每个项目都有图片

  27. 27

    XSLT - 每个都有多个列表

  28. 28

    每个对象都有相同的数组

  29. 29

    启用本机加密(ASO)时,为什么在Oracle中的每个错误SQL请求上都有“校验和失败”的信息?

热门标签

归档