티스토리 뷰
아주 중요한 질문입니다.
✅ 정리하자면:
React 클라이언트가 백엔드에서 Set-Cookie로 준 쿠키를 자동으로 저장하고 읽으려면,
보안 설정 + CORS 설정이 정확히 맞아야 합니다.
✅ 기본 전제: 클라이언트가 백엔드에서 준 쿠키를 저장하고 사용하는 조건
요구 조건 설명
| 1. 백엔드에서 Set-Cookie 헤더 전송 | 예: Set-Cookie: SESSION=abc123; HttpOnly; SameSite=None; Secure |
| 2. 프론트 요청에 credentials: 'include' 지정 | fetch, axios, XMLHttpRequest 등 |
| 3. 백엔드가 CORS 응답에 Access-Control-Allow-Credentials: true 포함 | 그렇지 않으면 쿠키 무시됨 |
| 4. SameSite 설정 | SameSite=None이어야 cross-origin에서 쿠키 저장 가능 |
| 5. HTTPS 환경 | Secure 쿠키는 HTTPS에서만 저장됨 |
✅ 클라이언트 측 설정 (React)
🔹 fetch 예시
fetch('https://api.mybackend.com/login', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ username, password }),
credentials: 'include' // ⬅ 이게 반드시 있어야 쿠키 저장됨!
});
🔹 axios 예시
axios.post('https://api.mybackend.com/login', { username, password }, {
withCredentials: true
});
✅ 백엔드(Spring) 설정
1. CORS 응답에 Access-Control-Allow-Credentials: true
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurer() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("https://your-react-client.com")
.allowedMethods("*")
.allowCredentials(true); // ⬅ 중요
}
};
}
2. 쿠키의 SameSite, Secure 설정 (Spring Security 예)
@Bean
public SessionCookieConfig sessionCookieConfig() {
SessionCookieConfig config = new SessionCookieConfig();
config.setName("SESSION");
config.setHttpOnly(true);
config.setSecure(true); // HTTPS에서만
// SameSite=None 설정은 필터/헤더 수동 설정 필요
return config;
}
또는 Set-Cookie 직접 헤더로 추가하는 방식도 가능.
✅ 확인 방법 (브라우저 개발자 도구)
- React 클라이언트에서 로그인 요청 전송
- 응답의 Set-Cookie 헤더 확인
- Application 탭 → Cookies에서 저장 여부 확인
✅ 요약
질문 답변
| 백엔드가 준 쿠키를 React에서 저장할 수 있나? | ✅ 가능함, 하지만 조건 충족 필요 |
| 필수 조건 | credentials: include, CORS 허용, SameSite=None, Secure, HTTPS |
| 보안 문제 주의 | 개발환경에서는 Secure=false, SameSite 설정이 민감함 |
필요하시면 Spring Boot + Spring Security 기준의 로그인 후 쿠키 설정 샘플도 도와드릴게요.
'Skill > html js css' 카테고리의 다른 글
| thymeleaf (1) | 2025.08.19 |
|---|---|
| Invariant Violation: Expected drag drop context (0) | 2025.07.19 |
| web worker (2) | 2025.07.14 |
| React.memo와 useMemo (0) | 2025.06.24 |
| react] typescript: field as keyof typeof updated[number] (1) | 2025.06.23 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- JQuery
- spring
- $.extend
- element위치
- border-collapse
- sumifs
- PostgreSQL
- caniuse
- DatePicker
- 진열사랑
- Javascript
- 프로젝트명변경
- springboot
- @ExceptionHandler
- excel
- object key
- oracle
- 전후방탐색
- devtools
- ul li로 테이블
- 여러 컬럼 update
- setter
- $.each
- draw.io
- Keycode
- 정규식
- lombok
- getter
- QueryDSL
- CSS
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함
