본문 바로가기

Programming Language/Java & Scala

spring boot HttpServletRequest 사용 쿠키 구현시 HttpSession.getAttribute(String) is null 에러 발생 대응

spring boot에서 쿠키/세션 로그인 기능 구현시 다음과 같은 에러를 만났습니다

...HttpSession.getAttribute(String)" is null

분명히 다음과 같이 attribute를 제대로 설정했는데 왜그랬을까요?

HttpSession session = request.getSession(true);
session.setAttribute("LOGIN_MEMBER", 123);

이유는 다음과 같습니다. 제가 가진 특수한 상황 때문이였는데요.

 

- server : localhost:8080

- client : localhost:3000

- client는 server로 axios 요청을 함

 

위 상황은 여러가지 문제가 있었고 해결방안은 다음과 같습니다.

 

1) CORS 문제

크로스 도메인에 대응하여 spring boot에 다음과 같은 옵션을 줬습니다.

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowCredentials(true)
                .allowedHeaders("*")
                .allowedOrigins("http://localhost:3000");
    }
}

 

2) withCredential 문제

axios 전역변수에 다음과 같이 설정하여 헤더에 session id가 넘어가도록 설정하였습니다.

import axios from "axios";
axios.defaults.withCredentials = true;

이후 정상동작함을 확인할 수 있었습니다.

 

 

 

반응형