📄 학습내용
쿠키 보안 정책
- AWS의 EC2에 서버를 올려서 쿠키를 저장하려니 다음과 같은 경고가 나오고, 쿠키가 저장되지 않았다.
- 'Secure' 속성은 있지만 보안 연결을 통해 수신되지 않았으므로 Set-Cookie 헤더를 통해 쿠키를 설정하려는 시도가 차단되었습니다.
- 해결시도 1) 안됨
- allowCredentials의 값을 true로 변경해서 쿠키 정책 허용
- 쿠키를 생성할 때, 유효기간 설정하지 않기
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("https://seb41-main-022.vercel.app", "http://localhost:3000", "http://seb41-main-022.s3-website.ap-northeast-2.amazonaws.com")
.allowedMethods("*")
.allowCredentials(true) // 쿠키 정책 허용
.maxAge(3000);
}
}
// 쿠키 생성 메서드
public void createCookie(HttpServletResponse response, String cookieName, String cookieValue) {
Cookie cookie = new Cookie(cookieName, cookieValue);
cookie.setPath("/");
// cookie.setMaxAge(60 * 500 * 60); // 500분간 저장 -> 제거
cookie.setSecure(true);
response.addCookie(cookie);
}
- 해결시도 2) 안됨
- SameSite 설정을 none으로 변경
- 참고 사이트 : https://ifuwanna.tistory.com/223
// 쿠키 생성 메서드
public void createCookie(HttpServletResponse response, String cookieName, String cookieValue) {
// Cookie cookie = new Cookie(cookieName, cookieValue);
// cookie.setPath("/");
//// cookie.setMaxAge(60 * 500 * 60); // 500분간 저장
// cookie.setSecure(true);
// response.addCookie(cookie);
response.setHeader("Set-Cookie", cookieName+"="+cookieValue+"; Secure; Path=/; SameSite=None");
}
- 해결시도 3)
- 정상적으로 저장되는 JSESSIONID와 같은 형태로 만들어서 전송하기
- 관련 코드
- secure 관련 설정 삭제
- httpOnly 설정 추가
// 쿠키 생성 메서드
public void createCookie(HttpServletResponse response, String cookieName, String cookieValue) {
Cookie cookie = new Cookie(cookieName, cookieValue);
cookie.setPath("/");
cookie.setHttpOnly(true);
response.addCookie(cookie);
}
'코드스테이츠 - 3회차 백엔드 부트캠프 > Main Project' 카테고리의 다른 글
Main-Project 회고록 (0) | 2023.02.03 |
---|---|
2023.01.18 수 - 멘토님과 만남 (0) | 2023.01.18 |
2023.01.17 화 - 인텔리제이 인식 오류, CORS 에러 (0) | 2023.01.17 |
2023.01.06 월 - query string 배열형 (0) | 2023.01.17 |
2023.01.12 목 - 비밀채팅 이미지 (0) | 2023.01.12 |