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

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

最佳答案

无需考虑任何设置。但是,通过在感兴趣的Filter(也许是url-pattern?)上创建一个初次输入的/*并用 ServletResponse 实现替换HttpServletResponseWrapper相当容易,这是在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;
        }
    });
}

10-06 12:35