인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

달지님의 프로필 이미지
달지

작성한 질문수

Next + React Query로 SNS 서비스 만들기

개인 팀프로젝트 중에 NextJS + react-query 관련 궁금증입니다.

해결된 질문

작성

·

242

·

수정됨

0

먼저 강의와 상관없는 질문 죄송합니다.

Next 13 Page Router + React Query v3 사용해서 프로젝트 진행했었고, 이후에 강사님 강의를 수강하고 있습니다.

이전 프로젝트 진행 시 문제를 해결은 했지만 찝찝함이 남아있어 궁금증을 해소하기 위해 질문 남깁니다.

getServerSideProps 사용해서 서버사이드에서 데이터를 불러오려고 했습니다.

서버(Spring)에서 쿠키 읽기에 실패해서 클라이언트에서 accessToken을 전달해야만 했습니다.

로그인시 accessToken을 클라이언트에서 쿠키에 직접 저장하고 axios 통신시 쿠키에 저장한 토큰을 꺼내서 header에 추가하여 요청하는 방식으로 구현하였는데,

서버 사이드에서는 브라우저 스토리지에 접근하지 못하므로 토큰을 읽지 못하는 문제가 발생했습니다.

모든 통신에서 토큰이 필요했던 프로젝트였어서 SSR을 포기해야하는건가? 하던 중에 React Query 의 Dehydration 방식을 적용하였더니 getServerSideProps 에서도 토큰을 읽고 전달하는것이 가능해졌습니다.

이러한 경우에도 SSR이 제대로 적용된 것이 맞는지, 그렇다면 React Query는 어떻게 브라우저 스토리지에 저장된 값을 읽을 수 있게 된건지 궁금합니다.

답변 1

1

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

리액트 쿼리가 넥스트 서버에서 로컬스토리지를 읽었을 것 같지는 않은데요. 못 읽는 게 맞고요. 네트워크 탭에서 첫 페이지 html 확인해보세요.

달지님의 프로필 이미지
달지
질문자

헉 늦은시간 답변 감사합니다!

몇개월 전 프로젝트이고 현재 서버 배포가 중단되어 확인하려면 코드를 일부 수정해야하는 상황이라 나중에 한번 확인해보겠습니다ㅠㅠ

로컬 스토리지가 아니라 쿠키에 저장하긴 하였는데, 클라이언트에서 쿠키를 저장하고 읽는 방식으로 구현하였습니다.
(정확히는 잘 모르겠지만 원래는 서버에서 httpOnly 쿠키를 세팅하는 것이라고 들었습니다.)
쿠키도 읽지 못하는 것이 맞는거죠..? 그렇다면 어떻게 토큰을 읽어서 통신했을지 정말 의문이네요...

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

아뇨 쿠키는 읽을 수 있습니다. 브라우저가 쿠키를 자동으로 넥스트 서버로 보냅니다.

달지님의 프로필 이미지
달지
질문자

앗 그렇군요!

그럼 쿠키에 저장해서 읽을 수 있었나 봅니다..

분명 getServerSideProps 내에서 쿠키에 저장된 토큰을 못읽어서 React Query 도입을 시도했던거 같은데 빠른 시일 내에 프로젝트를 다시 실행해보겠습니다,,

당시 문제 해결을 위해 여러 방법을 동시에 시도해서 무엇 때문에 해결되었는지 정리가 잘 안되었네요 ㅜ

도움주셔서 정말 정말 감사합니다 ㅠ

달지님의 프로필 이미지
달지

작성한 질문수

질문하기