似乎是一个愚蠢的问题,答案是“不要使用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;
}
});
}