Ste*_*ler 24 tomcat reverse-proxy jsessionid
我的Web应用程序在Tomcat中运行,http://localhost:8080/example.com/但它正在从http://example.com/端口80上提供的Apache进行反向代理.我的Web应用程序查看request.getHeader("x-forwarded-host")标头以了解它是在反向代理之后.当它(动态地)检测到它时,它会在没有servlet路径的情况下构建URL.
这适用于除JSESSIONID cookie之外的所有内容.它通过路径/example.com而不是/通过反向代理访问时设置.我无法弄清楚当代码上有x-forwarded-host标题时,我的代码如何告诉Tomcat覆盖该cookie的路径.
我自己尝试从Web应用程序设置JSESSIONID cookie,但这只会产生两个Set-Cookie标头,其中只有一个是正确的.
Ste*_*ler 33
Tomcat6使用Servlet 2.3规范.它不支持通过代码或Tomcat配置更改cookie路径.
我从Apache端开始使用一些mod_proxy指令.该ProxyPassReverseCookiePath指令完全符合我的要求.它从Tomcat获取带有错误路径的cookie并将其重写为正确的路径.
<VirtualHost *:*>
Servername example.com
ProxyRequests Off
ProxyPass / http://localhost:8080/example.com/
ProxyPassReverseCookiePath /example.com /
ProxyPassReverseCookieDomain localhost example.com
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
小智 6
或者,将节点/上下文(文件:/conf/context.xml)的属性sessionCookiePath设置为"/":
<Context sessionCookiePath="/">
Run Code Online (Sandbox Code Playgroud)
请查看:http://tomcat.apache.org/tomcat-7.0-doc/config/context.html了解更多信息
Servlet规范3.0版引入了控制会话cookie的功能:http://docs.oracle.com/javaee/6/api/javax/servlet/ServletContext.html#getSessionCookieConfig()
SessionCookieConfig scc = getServletContext().getSessionCookieConfig();
scc.setPath("/");
scc.setDomain("example.com");
Run Code Online (Sandbox Code Playgroud)
Tomcat 7使用Servlet规范的第3版.
| 归档时间: |
|
| 查看次数: |
41051 次 |
| 最近记录: |