手把手教你干掉 SpringBoot 项目地址栏中 URL 后面的 jsessionid

JAVA herman 99浏览
公告:“业余草”微信公众号提供免费CSDN下载服务(只下Java资源),关注业余草微信公众号,添加作者微信:codedq,发送下载链接帮助你免费下载!
本博客日IP超过2000,PV 3000 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:codedq,之前的微信号好友位已满,备注:返现
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
视频教程免费领

出大 Bug 了,本来公司年会的抽奖程序已被同事写好了,人事临危任命同事再改一下程序,内置特等奖是一位高管。

同事已开始也是拒绝的,奈何敌不住人事的诱惑。最终答应了更改程序,结果年会现场抽特等奖翻车了。

年会抽奖程序翻车了

这事的结果先暂且不表。我发到群里后,群里的一位网友以为我在闲着,于是给我丢过来一个问题。SpringBoot 中如何把浏览器 url 中的 jsessionid 去掉。

这个问题很简单,分两种情况。

如果只是单纯的 SpringBoot,只需在启动类中继承 SpringBootServletInitializer,然后重写 onStartup 方法。

public void onStartup(ServletContext servletContext) throws ServletException {
    super.onStartup(servletContext);
    // This will set to use COOKIE only
    servletContext.setSessionTrackingModes(
            Collections.singleton(SessionTrackingMode.COOKIE)
    );
    // This will prevent any JS on the page from accessing the
    // cookie - it will only be used/accessed by the HTTP transport
    // mechanism in use
    SessionCookieConfig sessionCookieConfig =
            servletContext.getSessionCookieConfig();
    sessionCookieConfig.setHttpOnly(true);
}

或者是在 yml 文件中,做以下配置:

server:
  session:
    # 会话sessionid存在cookie中,方便追踪,不设置会携带在url后面
    tracking-modes: cookie

然后重启项目就可以了。

但如果你的项目集成了 Spring Security,那就需要重写 WebSecurityConfigurerAdapter 的 configure 方法。

@Override
protected void configure(HttpSecurity http) throws Exception {
    http
    .sessionManagement()
    .sessionCreationPolicy(SessionCreationPolicy.NEVER)
    .and()
    .csrf().disable();  
}

上面的三种做法都可以解决 url 中带 JSESSIONID 的问题。希望能够帮助到大家!

业余草公众号

最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加作者微信号1:xmtxtt(5000人已满),微信号2:xttblog(5000人已满),微信号3:codedq(超3800)。备注:“1”,添加博主微信拉你进微信群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作也可添加作者微信进行联系!

本文原文出处:业余草: » 手把手教你干掉 SpringBoot 项目地址栏中 URL 后面的 jsessionid