如何在调用HttpServletResponse.encodeURL()时将Tomcat配置为不将会话ID编码到URL中

Ale*_*den 8 java session tomcat url-rewriting

看起来像一个愚蠢的问题,答案是"不要使用encodeURL()!" 但是我正在使用在JSP中使用netui锚标签的代码库,我需要禁用将JSESSIONID写入URL,因为这是一个安全风险.

在WebLogic中,您可以通过在weblogic.xml中配置url-rewriting-enabled来配置它(我知道,因为我在WebLogic服务器中编写了该功能!).但是,我找不到Tomcat的等效配置选项.

Bar*_*art 9

Tomcat 6支持disableURLRewriting可以true在Context元素中设置的属性:

http://tomcat.apache.org/tomcat-6.0-doc/config/context.html#Common_Attributes


Bal*_*usC 5

没有设置想到.但是,这是很容易通过创建第一项做Filter对听音url-pattern的利益(也许/*?),并取代ServletResponseHttpServletResponseWrapper实现,其中encodeURL()的回报非常相同的论点未修改回来.

开球示例:

public void doFilter(ServletRequest request, ServletResponse response) throws ServletException, IOException {
    chain.doFilter(request, new HttpServletResponseWrapper((HttpServletResponse) response) {
        public String encodeURL(String url) {
            return url;
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

  • 打败我...但请记住,响应中有4种不同的URL重写方法,其中一些或全部可能需要"禁用". (3认同)
  • 正确.然而,其中2个被弃用(以"Url"而不是"URL"结尾).你可能想要覆盖的另一个是`encodeRedirectURL()`.另请参阅http://java.sun.com/javaee/5/docs/api/javax/servlet/http/HttpServletResponse.html#encodeRedirectURL%28java.lang.String%29 (2认同)