去掉 URL 中讨厌的 jsessionid

url中含有jessionid,非常讨厌,不安全,有时候还会出现错误例如:<link rel="shortcut icon" href="http://www.localhost.net/;jsessionid=03251EFEA626D0E376B788833C391B21/resource/new/images/logo2.png" >这样的url中,根本访问不到资源,每次打开网站,都要刷新一下,才可以,用户是不会刷新的!

添加一个过滤器既可以解决问题,下面是代码

package in.imzone.duwei.web.filter;
 
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponseWrapper;
import javax.servlet.http.HttpSession;
import java.io.IOException;
 
 
public class DisableUrlSessionFilter implements Filter {
 
    
     public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
         // skip non-http requests
         if (!(request instanceof HttpServletRequest)) {
              chain.doFilter(request, response);
             return ;
          }
 
          HttpServletRequest httpRequest = (HttpServletRequest) request;
          HttpServletResponse httpResponse = (HttpServletResponse) response;
 
         // clear session if session id in URL
         if (httpRequest.isRequestedSessionIdFromURL()) {
              HttpSession session = httpRequest.getSession();
             if (session != null ) session.invalidate();
          }
 
         // wrap response to remove URL encoding
          HttpServletResponseWrapper wrappedResponse = new HttpServletResponseWrapper(httpResponse) {
              @Override
             public String encodeRedirectUrl(String url) {
                 return url;
              }
 
          
             public String encodeRedirectURL(String url) {
                 return url;
              }
 
            
             public String encodeUrl(String url) {
                 return url;
              }
 
            
             public String encodeURL(String url) {
                 return url;
              }
          };
 
         // process next request in chain
          chain.doFilter(request, wrappedResponse);
      }
 
     /**
       * Unused.
      */
     public void init(FilterConfig config) throws ServletException {
      }
 
     /**
       * Unused.
      */
     public void destroy() {
      }
}
然后需要在web.xml中配置一下该过滤器即可

< filter >
    < filter-name >jsessionid</ filter-name >
    < filter-class >
     com.haoxingtong.web.web.filter.DisableUrlSessionFilter
    </ filter-class >
</ filter >
< filter-mapping >
    < filter-name >jsessionid</ filter-name >
    < url-pattern >/*</ url-pattern >
</ filter-mapping >
参考:https://randomcoder.org/articles/jsessionid-considered-harmful


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值