인프런 커뮤니티 질문&답변
cookie 공유 질문이요
작성
·
371
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; 값이 계속
달라져서 문제가 없을 거 같은데 어떻게 쿠키가 공유 되는건가요?
답변 1
0
제로초(조현영)
지식공유자
제가 기억하기론 어떤 페이지 중 getServerSideProps를 안 쓰는 페이지가 있을 때 그 페이지에 접속하면 쿠키가 초기화되지 않아서 이전 로그인된 사용자 정보가 유지되었던 문제가 있었고 Cookie가 빈 값일때도 axios가 빈 값은 무시해버려서 문제였었습니다.
if문이 공유를 막는다기보다는 Cookie = ''이 막습니다.
제로초(조현영)
지식공유자
if문은 자기의 쿠키를 넣는 것이라 상관 없습니다. 쿠키 초기화는 요청을 보내기 전에 해야 쿠키가 없는 상태로 요청을 보낼 수 있습니다. 사실 뒤에 위치해도 괜찮습니다. 요청보낸 후에 쿠키 싹다 초기화 할 수 있으니까요. 더 나을수도 있겠네요.
일단 기존 쿠키부터 초기화 -> 서버요청이고 쿠키가 있으면 세팅 -> 백엔드서버로 요청
이런 순서입니다.





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