Tomcat 如何在内部处理会话?[已关闭]

2022-09-02 04:31:11

根据我的理解,Servlet Containers使用一些HTTP协议来处理会话,例如:

  1. 隐藏的表单域
  2. 网址重写
  3. 饼干

我很好奇Apache Tomcat如何在内部处理会话,尽管它与普通开发人员无关。

Tomcat是否也在使用cookie或其他内容?


答案 1

默认情况下,Tomcat直接在HTTP响应中发送cookie,就像返回浏览器并重写URL以在其中添加参数一样,用于第一个请求,以便它可以在客户端浏览器中禁用cookie的情况下回退到以后。SET COOKIE:JSESSIONID....JSESSIONID

下次如果浏览器请求服务器,Tomcat 将使用 cookie 来维护会话。JSESSIONIDrequestJSESSIONID

您可以通过修改上下文来覆盖 Tomcat 中的会话 cookie 行为.xml

<Context cookies="false">
</Context>

并禁用 URL 重写相同的方式:

<Context disableURLRewriting="true">
</Context>

甚至阅读这个 Servlet 会话跟踪与 cookie (JSESSIONID)


答案 2

Tomcat 默认发送 Cookie,除非用户从浏览器中阻止它们(尽管不鼓励这种做法)。此外,创建的会话 cookie (JSESSIONID) 不是持久性 cookie,每当浏览器的实例(窗口)关闭时,它们就会消失。


推荐