백엔드 서버 배포 후, 프론트엔드 로컬 호스트에서 연결은 잘 되었으나, 쿠키 전달에서 오류가 났다. 로그인 진행을 하면 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
로 받아왔는데 이 부분도 내가 담당하지 않아서 정확히 상황 인지를 못한 상태였었다. 그러나, 이번 클론 프로젝트에서 이 문제에 대해 내가 직접 해결해볼 수 있어서 시행착오는 많았지만 많이 배웠던 것 같다.