강의

멘토링

커뮤니티

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

haruharu님의 프로필 이미지
haruharu

작성한 질문수

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

express redirect

작성

·

955

0

client 주소: http://localhost:3000

server 주소: http://localhost:5000

현재 저는 쿠키 공유 잘 되며 글 작성도 잘 됩니다. 그런데 client에서 server로 요청을 보내고 요건에 부합하지 않으면 client측 화면을 redirect 시키려는데 cors 오류가 발생합니다. 어떤부분을 보면 좋을까요?

server에서 redirect 주소는 http://localhost:3000/login 이런식으로 client 주소 작성했습니다.

추가적으로 client 측에서 router.push로 서버 주소로 요청보내고 로직 수행 후 응답 결과로 res.redirect는 cors 오류 없이 잘 동작합니다. 이건 또 왜 잘 되는걸까요.?

 

답변 1

0

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

cors 설정을 했는데 cors 에러가 나는 것은 보통 에러로 인해서 cors 설정이 무시되었기 때문입니다. 에러부터 확인해봐야할 수 있습니다. 해당 라우터에서요.

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

image

클라이언트측에서 cors 오류가 발생하는것같은데 어떻게하면 좋을까요?

인터넷에서 next rewrite 설정해보라해서 해봤는데 안됩니다 ㅜ 이것저것 해봤는데 제가 잘못하고있는건지 해결이 안되네요

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

서버에서 cors 설정 하신게 맞나요??

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

네 설정했습니다. cors 설정한거 끄면 오류 메세지가 at http://localhost:3000/login 이 아닌 http://localhost:4000 ~ 으로 뜹니다!

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

 

제가 지금 오류관련해서 짐작하고있는건 서버측에서는 cors 설정으로 클라이언트측 주소를 적어둬서 제대로 요청 및 응답이 동작하는데

서버측에서 res.redirect가 서버측에서 클라이언트 측으로 보내는 응답이라기보다는 응답 및 요청? 이라서 클라이언트측에서 오류를 발생하는게 아닌가 싶어서 찾아보는데 해결을 못하고있습니다..

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

근데 일단은 ajax로 로그인하시는 것 같은데 ajax에서 redirect하는게 passport 구조상 불가능합니다. a 태그로 하셔야 합니다.

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

다시 한번 확인해보곘습니다 ㅎㅎ 답변해주셔서 감사합니다.

그리고 추가적으로 질문 두가지 있는데요.

  1. _app.tsx 에서 useEffect안에서 api 요청보내면 network 탭에 요청이 두번 가는걸로 찍히고 일반 페이지에서 useEffect내부에서 api 요청 보내면 하나찍히는데 이유가 뭘까요??

  2. 아래 사진처럼 js.js와 dom.js가 왜 여러번 network 탭에 찍히는걸 까요?? next.config.js에 reactStrictMode: false로 작성해도 동일합니다.

image

 

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

모종의 이유로 _app.tsx가 두 번 렌더링된 것일 수 있습니다. props나 state들 로깅해보세요.

js파일 부분은 저도 확인해봐야겠습니다.

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

js부분은 확장프로그램에서 추가하는 스크립트네요. 무시하시면 됩니다. 아니면 시크릿모드로 들어가세요.

haruharu님의 프로필 이미지
haruharu

작성한 질문수

질문하기