Programming Language/Java & Scala
spring boot HttpServletRequest 사용 쿠키 구현시 HttpSession.getAttribute(String) is null 에러 발생 대응
AndersonChoi
2023. 3. 14. 22:50
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;
이후 정상동작함을 확인할 수 있었습니다.
반응형