もなかアイスの試食品

「とりあえずやってみたい」そんな気持ちが先走りすぎて挫折が多い私のメモ書きみたいなものです.

SpringBootでURLにjsessionidが入らないようにする

はじめに

SpringBootアプリをテスト環境や本番環境にデプロイし、初回アクセスしたときに、例外が発生することがあった。

そのとき、URLが【http://localhost:8080/sample;jsessionid=xxxx】になっていた。

jsessionidを消してブラウザを更新すると、その後は問題なく動作する。

例外が発生するのも問題だし、そもそもセッションIDがURLに表示されるのも「どうなの?」って感じなので、対策した話

環境

  • SpringBoot 2.1.0
  • Java 1.8

参考サイト

BLOG.IK.AM - Remove 'jsessionid=xxxx' from URL in Spring Boot App

修正点

以下のConfigurationを追加する

import org.springframework.boot.web.servlet.ServletContextInitializer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.servlet.SessionTrackingMode;
import java.util.Collections;

@Configuration
public class CommonConfig {

    @Bean
    public ServletContextInitializer servletContextInitializer() {
        // 初回アクセス時に、URLにSessionIDが付与されるのを防ぐ
        // https://blog.ik.am/entries/353
        ServletContextInitializer initializer = servletContext -> {
            servletContext.setSessionTrackingModes(
                Collections.singleton(SessionTrackingMode.COOKIE)
            );
        };
        return initializer;
    }

}