如何从 Eclipse 中本地 Tomcat7 中的 URL 中删除 jsessionid

How to remove jsessionid from URL in my local Tomcat7 in Eclipse

我有一个 java Web 应用程序,我使用 Tomcat7 在生产中部署了它。 我在生产环境中使用 Tomcat Web Application Manager 页面,我将 WAR 部署在上下文路径“/”中。在生产中,我没有在 URL.

中看到 jsessionid

不过在我的开发环境中,相同的应用程序(因此相同的 web.xml),在 eclipse 中以 Tomcat7 开始,在 URL 中显示 jsessionid

我的 web.xml 中唯一的会话配置是:

<session-config>
    <session-timeout>15</session-timeout>
</session-config>

我在 Tomcat7 中看到的唯一区别是 server.xml:

生产:

<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>

本地:

  <Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" pattern="%h %l %u %t &quot;%r&quot; %s %b" prefix="localhost_access_log." suffix=".txt"/>
    <Context docBase="MyApp" path="/" reloadable="true" source="org.eclipse.jst.jee.server:MyApp"  />
  </Host>

另一个区别是我在生产中使用 NGinx 从 Tomcat.

做一个从端口 80 到 8080 的代理传递

我可能遗漏了什么?

谢谢

您可能会在您的开发环境中使用不支持(或禁用)cookie 的浏览器或其他客户端。

另一个提示:您可以在 tomcat 7(在您的 web.xml 文件中)使用此代码:

<session-config>
     <tracking-mode>COOKIE</tracking-mode>
</session-config>

问题是要使 cookie 正常工作,域名必须至少有两个点 (https://curl.haxx.se/rfc/cookie_spec.html)。

因此,要使其在本地运行,我必须执行以下操作:

更改 /etc/hosts 文件以包含至少有一个句点的任何域名,指向 127.0.0.1:

127.0.0.1       localhost
127.0.0.1       localhost.test
255.255.255.255 broadcasthost
::1             localhost

更改 context.xml 以包含新域:

<Context sessionCookieDomain=".localhost.test" sessionCookiePath="/"> 
...
</Context>