로컬 환경에서는 쿠키가 잘 통신되는데, 배포 환경에서는 쿠키가 클라이언트에 저장이 안되는 문제가 발생했다
게시글 조회 수가 중복으로 증가되지 않도록 하기 위해 쿠키를 사용했다.
'postView'라는 쿠키에 게시글 번호가 담기고, 해당 게시글 번호에 재접근해도 조회 수가 중복으로 증가되지 않게 되도록 구현한건데, 로컬 환경에서는 잘 하는데, 배포 환경에서는 위 사진처럼 쿠키가 저장되지 않았다.
이리저리 찾아보니, 쿠키 도메인을 설정해주어야 한다는 것을 알게 되었다.
| PostService.java
...
if (oldCookie != null) {
if (!oldCookie.getValue().contains("["+ postId.toString() +"]")) {
increaseHits(postId);
oldCookie.setValue(oldCookie.getValue() + "_[" + postId + "]");
oldCookie.setPath("/");
oldCookie.setDomain("cocoding.xyz");
oldCookie.setMaxAge(60 * 60 * 24);
response.addCookie(oldCookie);
}
} else {
increaseHits(postId);
Cookie newCookie = new Cookie("postView", "[" + postId + "]");
newCookie.setPath("/");
newCookie.setDomain("cocoding.xyz");
newCookie.setMaxAge(60 * 60 * 24);
response.addCookie(newCookie);
}
...
기존에 CORS 설정하면서 쿠키 사용은 허락했었기 때문에, 위에서 setDomain해 준 것만으로도 동작한다!
| WebConfig.java
...
.allowCredentials(true)
| profile-details.js
// 게시글 상세 읽기
function getPost() {
...
$.ajax({
type: 'GET',
url: process.env.BACKEND_HOST + '/post/' + params['id'],
xhrFields: {
withCredentials: true
},
beforeSend: function (xhr) {
xhr.setRequestHeader('Content-type', 'application/json');
xhr.setRequestHeader('Authorization', 'Bearer ' + token);
},
쿠키가 정상적으로 동작하는 것 확인!