一尘不染

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

tomcat

似乎是一个愚蠢的问题,答案是“不要使用encodeURL()!”。但是我正在使用在JSP中使用netui锚标记的代码库,并且需要禁用将JSESSIONID写入URL中,因为这样做存在安全风险。

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


阅读 307

收藏
2020-06-16

共1个答案

一尘不染

没有设置想到。但这很容易做到,方法是创建一个对感兴趣的(可能是?)进行初次Filter监听,并用实现返回,该实现返回未经修改的相同参数。url- pattern``/*``ServletResponseHttpServletResponseWrapperencodeURL()

开球示例:

public void doFilter(ServletRequest request, ServletResponse response) throws ServletException, IOException {
    chain.doFilter(request, new HttpServletResponseWrapper((HttpServletResponse) response) {
        public String encodeURL(String url) {
            return url;
        }
    });
}
2020-06-16