inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지

passport 세팅 및 회원가입 만들기

setCookie 질문입니다.

해결된 질문

1374

김무연

작성한 질문수 12

1

안녕하십니까 제로초님 질문이 있어 글을 올립니다.

현재 next.js를 이용하여 localhost:3000 포트를 이용해 front를 진행하고 있고, back은 제로초님의 강의를 이용하여 localhost:8001 포트로 서버를 만들어 진행하고 있습니다.

 

그러다, express passport 로그인 후 setCookie로 쿠키에 값을 저장하는 과정에서, front 서버 localhost:3000 포트에서는


네트워크 탭에는 위와 같이 Set-Cookie로 명시 되어 있으나, 애플리케이션 탭의 쿠키에는 저장이 되지 않았습니다.

 

그래서 postman으로 실험을 해본 결과 postman에서는 정상적으로

쿠키가 저장된 모습을 확인할 수 있었습니다.

 

때문에 이와 같은 경우를 계속 찾아보고, 검색을 해보았는데,

브라우저의 쿠키 정책에 따라, 서로 다른 도메인 간에는 쿠키를 공유할 수 없습니다. 이를 해결하기 위해서는 서버에서 쿠키를 설정할 때 samesite 옵션을 none으로 설정 후 https 를 이용해 통신해야 한다고 나왔었습니다.

 

위와 같은 설명 때문에 localhost:3000 에서는 쿠키값이 저장이 안 된 것이 맞는 지 궁금합니다.

node.js mysql mongodb express typescript socket.io jwt

답변 3

2

hyoloui

Set-Cookie는 백엔드 서버에서 붙여주는 쿠키이기 때문에
next.js 를 통해 서버 통신을 했다면
브라우저에 붙어있지 않고, 프론트엔드 서버(next.js 서버)와 통신할 때 사용되었을 겁니다
이것을 가지고 브라우저에 붙이려면 세팅을 따로 해주셔야 합니다



말씀하신 백엔드 서버 port:8001port:3000 브라우저(클라이언트) 가 직접 소통하는 것 이 아닌,
next.js 에서는 next.js server 에서 port:8001 로 소통하는 것이기 때문입니다.

port:8001 -> next.js server 백엔드 서버에 요청 후 결과값 받아옴
next.js server -> port:3001 받아온 결과값으로 html 렌더링(SSR)

그래서 postman 에서 요청에서는 Set-Cookie가 있지만
next.js 에서는 서버가 중간에 있기 때문에 쿠키를 따로 set 해줘야 하는 것입니다.

 



let setCookie = authResponse.headers.get('Set-Cookie');

console.log('set-cookie', setCookie);

if (setCookie) {

const parsed = cookie.parse(setCookie);

cookies().set('connect.sid', parsed['connect.sid'], parsed); // 브라우저에 쿠키를 심어주는 것

}


참조 : https://github.com/ZeroCho/next-app-router-z/blob/master/ch4/src/auth.ts#L56

1

김무연

감사합니다! 많은 도움이 되었습니다.

1

김무연

아 해결했습니다.. 바보같이 프론트단에서 axios 로 요청을 날릴때 withCredentials를 true로 설정을 안해줬었습니다...

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

질문하신 내용과 유사한 상황에 대한 답변을 찾아드리겠습니다. 찾아본 결과, 서로 다른 도메인에서 쿠키가 저장되지 않는 문제와 관련하여 강사님께서 답변해주신 내용이 있습니다. 해당 답변은 다른 도메인 간 쿠키 전송 문제와 관련된 것으로, Set-Cookie 헤더 설정 시 domain, SameSite 등의 옵션 설정에 대한 내용입니다.

아래 링크에서 강사님의 답변을 확인하실 수 있습니다.

해당 내용을 참고하시어 문제를 해결해보시길 바랍니다.

깃헙 질문

0

82

2

강의 1-1 수업노트의 로드맵 링크가 작동하지 않습니다.

0

76

1

aws - lightsail 이용 관련

0

58

1

4강 http 서버 만들때 ESM방식으로 해도 될까요?

0

81

2

모듈 사용 시 단점이 있나요?

0

81

1

node.js 버전 및 typescript 적용 문의

0

93

2

12.7. 방장기능(강퇴) 질문드립니다.

0

80

2

12.7 socket.js코드 그대로 뱃겨서 했는데, socket.request.session.color가안나오네요

0

69

1

12.7 코드 그대로 뱃겨서 햇는데 스샷같이 오류가뜹니다.

0

75

2

12.7.1스스로 해보기 질문되나요

0

95

3

시퀄라이즈 실습하기 질문드립니다.

0

196

9

<7-5. 시퀄라이즈 사용하기>수업 질문 드립니다.

0

97

2

크롬에서 user id를 인풋에 입력하고 등록하면 404 에러처리 페이지가 뜹니다.

0

113

2

구매 결제관련 질문입니다 !

0

122

1

다수의 supertest 가 실행될 때 force:true로 인한 DB 초기화 문제

0

133

2

node 설치 방법이 전혀다르게 바뀐것 같습니다.

0

152

2

12강 깃허브에 있는 12.7 chat.html 복붙했는데 css오류

0

122

2

무료/프리미엄 동시 소유 시 질문

0

117

1

비주얼 스튜디오 코드로 계속 진행해도 괜찮을까요?

0

135

2

10강 cors에러 localhost:4000으로 접속했을때 에러

1

159

2

webstorm 해결할 수 없는 변수 문제

0

154

2

혹시 몽고DB 쓸거면 MySQL 강의 스킵해도 되나요?

0

149

2

LightSail 실행 중 오류 질문드립니다!

0

204

2

RedisStore 사용법 질문

0

132

2