GeehDev

[Spring boot] URL 또는 리소스 경로에 ;jsessionid 발생 시 해결방법 본문

Study/Spring boot

[Spring boot] URL 또는 리소스 경로에 ;jsessionid 발생 시 해결방법

geehyun 2025. 2. 21. 14:16

Index

    반응형

    [Spring boot] URL 또는 리소스 경로에 ;jsessionid 발생 시 해결방법

    발생상황

    • 최초 접속 시 CSS/JS/이미지 등 정적 리소스 파일을 불러오지 못하고 전부 깨지는 현상 발생
      => 개발자 도구 내 console 창에 각 리소스 파일 404 오류 발생
    • URI 경로를 체크하는 JS로직이 있었는데 URI 경로에 ;jsessionid 값이 붙어 정상적으로 처리하지 못함

     

    원인

    1. URL 경로에 ;jsessionid 값이 붙음
    2. CSS/JS/이미지 경로 등 정적 리소스 경로에 ;jsessionid 값이 붙음
    <link rel="stylesheet" href="/css/common.css;jsessionid=%5B%5B%~~~?v=20241209">

    위와 같은 상황이 원인이었고, 이는 톰캣 등 특정 웹 컨테이너에서 브라우저 세션 체크를 위해, URL에 ;jsessionid를 포함해 리다이렉트 하기 때문에 발생 함

    => 이는 오류는 아니고, 브라우저에서 쿠키사용을 허용하는지 여부를 알 수 없기 때문에 최초 접속 시에 쿠키 + 위 URL에 ;jsessionid를 포함해 보내는 세션트랙킹 방식을 사용해서 발생한다. 간단한 설정을 통해 해제할 수 있음

     

     

    해결방법

    세션 체크를 쿠키로만 하도록 세션 트랙킹 방식을 제한하여 해결할 수 있음.

    1. spring boot일 경우

    # aplication.yml 일 경우
    sever:
      servlet:
        session:
          tracking-mode: cookie #세션을 쿠키로만 추적
    
    # aplication.properties 일 경우
    sever.servlet.session.tracking-mode : cookie #세션을 쿠키로만 추적

    2. spring일 경우

    <!-- web.xml에 작성 -->
    <session-config>
        <tracking-mode>COOKIE</tracking-mode>
    </session-config>

    3. 위 방법 모두 사용했는데 해결이 안 될 경우

    1. 브라우저가 쿠키를 차단하고 있을 가능성이 있음 → 브라우저 쿠키 설정 확인 필요
    2. 서버 설정에서 tracking-mode를 쿠키로 설정했는지 확인 필요

    마치며

    엄청 간단한 문제인데도 처음 겪으니 원인을 찾는 거부터 시간이 꽤나 소요되었다.
    같은 문제를 겪으시는 분이 있다면 얼른 원인을 찾아서 본인 상황에 맞는 해결방법을 적용하실 수 있길 바랍니다.

    728x90

    'Study > Spring boot' 카테고리의 다른 글

    [Spring boot] 스프링 vs 스프링 부트  (0) 2025.01.12