백엔드 서버 배포 후, 프론트엔드 로컬 호스트에서 연결은 잘 되었으나, 쿠키 전달에서 오류가 났다. 로그인 진행을 하면 network 탭의 header -> set-cookie와 application 탭에 쿠키는 잘 저장이 되었지만, 인증을 필요로 하는 (auth-middleware)를 통과하는 API 요청을 하면 403 에러가 뜨면서 쿠키가 아예 전달이 되지 않았다. 개발자 도구에서도 해당 요청에 대해 Cookies 해더가 아예 없었다.
AWS EC2로 배포된 백엔드 서버에 서브 도메인 연결하기
// React
const instance = axios.create({
baseURL: API_URL,
withCredentials: true, // Add this line to enable sending cookies
});
pp.use(
cors({
origin: "http://localhost:3000",
credentials: true,
})
);
*이 아닌 특정 origin을 설정해주고, credentials값을 true로 준다.broccoli-market.store 도메인을, 백엔드 서버에는 api.broccoli-market.store라는 서브 도메인을 연결해보았다. (연결 과정 -> issue #2)localhost:3000으로 서버를 구동하고, 백엔드 서버는 IP 주소이기 때문에 도메인 불일치 문제가 생기는 것이었다. 실제로 same-origin policy에 어긋나게 접근을 하면, 네트워크 탭 set-cookie 부분 토큰 값 옆에 ! 경고 사인이 떴다.pm2 start를 하였다. 근데 이걸 해놓고 다른 작업을 하다가 다시 ssh 터미널로 돌아왔더니 현재 디렉토리가 우리 repository 디렉토리가 아니어서 터미널을 끄고 다시 ssh 접속을 하고 또 pm2 start app.js를 했더니 3000 포트가 이미 사용중이라는 에러가 계속 떴다.... 처음 pm2 start를 어디서 했었는지 기억을 못해서 포트 번호를 변경해주고 포트포워딩도 해줬는데 그것도 안돼서 결국 EC2 인스턴스도 다시 생성했다... 암튼 시행착오가 조금 많았다.proxy_pass 경로를 설정해줌으로서 해결되었다.req.headers로 받아왔는데 이 부분도 내가 담당하지 않아서 정확히 상황 인지를 못한 상태였었다. 그러나, 이번 클론 프로젝트에서 이 문제에 대해 내가 직접 해결해볼 수 있어서 시행착오는 많았지만 많이 배웠던 것 같다.