inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[리뉴얼] React로 NodeBird SNS 만들기

SSR시 쿠키 공유하기

cookie 공유 질문이요

376

dsfsdf

작성한 질문수 19

0

export const getServerSideProps = wrapper.getServerSideProps(
  async (context) => {
    const cookie = context.req ? context.req.headers.cookie : "";
    axios.defaults.headers.Cookie = "";
    if (context.req && cookie) {
      axios.defaults.headers.Cookie = cookie;
    }
    context.store.dispatch({
      type: LOAD_MY_INFO_REQUEST,
    });
    context.store.dispatch({
      type: LOAD_POSTS_REQUEST,
    });
    context.store.dispatch(END);
    await context.store.sagaTask.toPromise();
  }
);
여기서 쿠키공유를 막기위해
    if (context.req && cookie) {
      axios.defaults.headers.Cookie = cookie;
  }
를 넣어주셨는데 이 조건문없이
export const getServerSideProps = wrapper.getServerSideProps(
  async (context) => {
    const cookie = context.req ? context.req.headers.cookie : "";
  axios.defaults.headers.Cookie = cookie;
    context.store.dispatch({
      type: LOAD_MY_INFO_REQUEST,
    });
    context.store.dispatch({
      type: LOAD_POSTS_REQUEST,
    });
    context.store.dispatch(END);
    await context.store.sagaTask.toPromise();
  }
);
이런식으로 해도 페이지 접속하는 유저마다 cookie가 달라서
변수 cookie는 계속 변하고
axios.defaults.headers.Cookie = cookie; 값이 계속
달라져서 문제가 없을 거 같은데 어떻게 쿠키가 공유 되는건가요?

Next.js express nodejs redux react

답변 1

0

제로초(조현영)

제가 기억하기론 어떤 페이지 중 getServerSideProps를 안 쓰는 페이지가 있을 때 그 페이지에 접속하면 쿠키가 초기화되지 않아서 이전 로그인된 사용자 정보가 유지되었던 문제가 있었고 Cookie가 빈 값일때도 axios가 빈 값은 무시해버려서 문제였었습니다.

if문이 공유를 막는다기보다는 Cookie = ''이 막습니다.

0

dsfsdf

답변 감사합니다. 한가지 더 궁금한게 있는데

export const getServerSideProps = wrapper.getServerSideProps(
  async (context) => {
    const cookie = context.req ? context.req.headers.cookie : "";
    axios.defaults.headers.Cookie = "";
    if (context.req && cookie) {
      axios.defaults.headers.Cookie = cookie;
    }
    context.store.dispatch({
      type: LOAD_MY_INFO_REQUEST,
    });
    context.store.dispatch({
      type: LOAD_POSTS_REQUEST,
    });
    context.store.dispatch(END);
    await context.store.sagaTask.toPromise();
  }
);
여기서 axios.defaults.headers.Cookie = "";가
await context.store.sagaTask.toPromise(); 아래에 있어줘야 Cookie가 초기화 되는게 아닌가요?
 
    axios.defaults.headers.Cookie = "";
    if (context.req && cookie) {
      axios.defaults.headers.Cookie = cookie;
  }
이런식으로 있으면 axios.defaults.headers.Cookie = ""; 초기화를 해도 밑에 if문에서
cookie를 집어넣어주면 cookie값이 그대로 공유되는게 아닌가요? 제가 어디서 헤매고 있는지
모르겠네요..

0

제로초(조현영)

if문은 자기의 쿠키를 넣는 것이라 상관 없습니다. 쿠키 초기화는 요청을 보내기 전에 해야 쿠키가 없는 상태로 요청을 보낼 수 있습니다. 사실 뒤에 위치해도 괜찮습니다. 요청보낸 후에 쿠키 싹다 초기화 할 수 있으니까요. 더 나을수도 있겠네요.

일단 기존 쿠키부터 초기화 -> 서버요청이고 쿠키가 있으면 세팅 -> 백엔드서버로 요청

이런 순서입니다.

넥스트 버젼 질문

0

91

2

로그인시 401 Unauthorized 오류가 뜹니다

0

104

1

무한 스크롤 중 스크롤 튐 현상

0

199

1

특정 페이지 접근을 막고 싶을 때

0

117

2

createGlobalStyle의 위치와 영향범위

0

104

2

인라인 스타일 리렌더링 관련

0

98

2

vsc 에서 npm init 설치시 오류

0

159

2

nextjs 15버전 사용 가능할까요?

0

166

1

화면 새로고침 문의

0

129

1

RTK에서 draft, state 차이가 있나요?

0

164

2

Next 14 사용해도 될까요?

0

455

1

next, node 버전 / 폴더 구조 질문 드립니다.

0

359

1

url 오류 질문있습니다

0

218

1

ssh xxxxx로 우분투에 들어가려니까 port 22: Connection timed out

0

393

1

sudo certbot --nginx 에러

0

1298

2

Minified React error 콘솔에러 (hydrate)

0

482

1

카카오 공유했을 때 이전에 작성했던 글이 나오는 버그

0

257

1

프론트서버 배포 후 EADDRINUSE에러 발생

0

341

1

npm run build 에러

0

526

1

front 서버 npm run build 중에 발생한 에러들

0

399

1

서버 실행하고 브라우저로 들어갔을때 404에러

0

351

2

css 서버사이드 랜더링이 적용되지 않아서 문의 드립니다.

0

291

1

팔로워 3명씩 불러오고 데이터 합쳐주는걸로 바꾸고 서버요청을 무한으로하고있습니다.

0

252

2

해시태그 검색에서 throttle에 관해 질문있습니다.

0

207

1