강의

멘토링

커뮤니티

Inflearn Community Q&A

kimyong900560's profile image
kimyong900560

asked

[Renewal] Creating NodeBird SNS with React

https에서 쿠키관련 질문이 있습니다.

Written on

·

244

0

안녕하세요. 제가 구름 ide를 통해 github react-nodebird의 tool-kit을 실행시켜봤는데, 쿠키가 전달이 잘 안되는 것 같습니다.

getServerSideProps로는 loadMyInfo가 잘 실행되지 않고 loadPosts만 정상 작동하며, loadMyInfo는 useEffect안에 넣었을 때만 로그인 이후에 새로고침을 했을 경우 내 정보를 정상적으로 받을 수 있었습니다.

제가 고민을 해본 결과 구름 ide에서 제공하는 도메인이 https라서 그러지 않을까 라고 생각했습니다.

만약 https라면 백엔드에서 코드를 어떻게 변경 시켜줘야하는지 알 수 있을까요? 현재 소스 코드는 react-nodebird toolkit 폴더와 backend, frontend 모두 동일합니다!

reduxexpressreactnodejsNext.js

Answer 1

0

zerocho님의 프로필 이미지
zerocho
Instructor

지금 프론트서버랑 백엔드 서버 둘 다 구름ide이신 건가요? 프론트 서버랑 백엔드 서버는 도메인이 동일한가요? express-session에서 secure: true와 domain에 백엔드 도메인을 넣으신 게 맞나요?

kimyong900560님의 프로필 이미지
kimyong900560
Questioner

네 지금 프론트서버랑 백엔드 서버 둘 다 구름 ide맞고, 서버 도메인은 다릅니다. (서로 다른 컨테이너에서 서버를 실행했습니다.)

express-session은 cookie 부분을 secure을 false, true로 각각 해도 새로고침을 할 경우 로그인이 풀리는 증상은 같았는데, false로 할경우 새로고침을 하고 로그인이 풀렸을 때 다시 로그인을 할경우 로그인 하지 않은 사람만 접근할 수 있다는 메세지가 뜨고 true로 할 경우에는 다시 로그인이 정상적으로 이루어졌습니다.(새로고침이 되면서 로그아웃도 같이 되는 것 같습니다.)

zerocho님의 프로필 이미지
zerocho
Instructor

일단 프론트서버->백엔드서버로 쿠키 전달이 제대로 안 되는 것입니다. axios.defaults.headers.cookie 부분 getServerSideProps에 제대로 되어있나요?

kimyong900560님의 프로필 이미지
kimyong900560
Questioner

image네 이렇게 toolkit 그대로 사용했습니다!

zerocho님의 프로필 이미지
zerocho
Instructor

프론트랑 백엔드 서버 도메인이 달라 브라우저->프론트서버로 전달이 안 되는게 제일 문제인 것 같네요. 보통 이런 경우는 쿠키 대신에 토큰 로그인으로 합니다.

kimyong900560님의 프로필 이미지
kimyong900560
Questioner

그럼 쿠키가 잘 전달이 안 되는게 https인데 프론트엔드와 백엔드 서버의 도메인이 다르기 때문이라고 이해하면 될까요?

zerocho님의 프로필 이미지
zerocho
Instructor

지금 브라우저에서 쿠키 탭을 봐보시면 어떤 도메인의 쿠키가 저장되어있는지 보실 수 있습니다. 아마 백엔드 도메인일 것 같은데요.

kimyong900560님의 프로필 이미지
kimyong900560
Questioner

확인해 보니까 프론트 쿠키로 되어있는 것 image같아요

kimyong900560's profile image
kimyong900560

asked

Ask a question