[Spring Boot 2] 如何移除 jsessionid

Posted by Tim Lin on 2020-04-10

[Spring Boot 2] 如何移除 jsessionid

最近在提供 app 的 webview 導頁上加上了 token 的驗證, 但開發 app 工程師卻反映導頁後有這個錯誤

一開始看霧煞煞的…要了 url 才發現…喔…導頁後被做了 URL rewriting 加上了 jsessionid

大概像這樣

1
http://url;jsessionid=61CCC05850667E3AA049C83C43130B84

jsessionid 這名字是從 tomcat 來的, 其實就是 sessionid, 所以第一個想到最簡單的方式就是去設定 spring boot 內建的 tomcat server 的參數

Servlet 的 Session Tracking Modes 有以下三種

  • COOKIE - 把 JSESSIONID 存在 cookies
  • URL - URL rewriting, 把 JSESSIONID 接在原 url 後面
  • SSL - SSL sessions

所以這裡我使用了把 session 的 tracking-modes 改成 cookie, 這樣就不會有 jsessionid 的產生了

application.yaml

1
2
3
4
server:
servlet:
session:
tracking-modes: 'cookie'

Referances

https://stackoverflow.com/questions/31791587/spring-boot-remove-jsessionid-from-url

https://www.logicbig.com/tutorials/java-ee-tutorial/java-servlet/session-tracking-mode.html

其他的設定方式也可以參考這篇
https://my.oschina.net/wangnian/blog/648022