jsessionid, 404 error

murkgom·2022년 2월 4일
0

0. 현상

오랜만에 spring security를 사용하지 않는 프로젝트를 생성,
별도로 session에 값을 넣어주고 체크하는 로직을 구현

  • 브라우저에서 페이지를 처음 띄웠을 때 리소스들을 찾지 못하고 404에러 발생
  • 새로고침하면 정상적으로 잘 찾는다.
  • 호출 url에 의도치 않은 값이 붙어 있다? (;jsessionid=블라블라)

1. 원인 파악 - 서버

클라이언트의 첫 요청시,

[서버]
1. session 생성
2. 클라이언트가 cookie 사용 가능한지 모름
3. url과 cookie 모두에 session에 접근할 수 있는 정보를 제공(=jsessionid)

=> url suffix로 jsessionid값이 추가된다.

2. 해결

Session의 TrackingMode에 Cookie 방식을 추가해주면,

서버는 원인 파악 - 서버의 3단계에서

=> url suffix에 jsessionid값이 사라진다!

3. 코드

    @Bean
    public ServletContextInitializer configSession() {
        return servletContext -> {
            servletContext.setSessionTrackingModes(Collections.singleton(SessionTrackingMode.COOKIE));
            
            servletContext.getSessionCookieConfig()
            	.setHttpOnly(true);
        };
    }

0개의 댓글