繁体   English   中英

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

[英]How to remove jsessionid from URL in my local Tomcat7 in Eclipse

我有一个使用 Tomcat7 部署在生产环境中的 Java Web 应用程序。 我在生产中使用Tomcat Web Application Manager页面,我在上下文路径“/”中部署我的 WAR。 在生产中,我没有在 URL 中看到jsessionid

但是,在我的开发环境中,在 Eclipse 中以 Tomcat7 启动的相同应用程序(因此相同的web.xml )在 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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM