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

최지웅님의 프로필 이미지

작성한 질문수

따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)

회원 가입 페이지 기능 생성(2)

cors 에러

작성

·

487

0

안녕하세요. 회원가입 페이지 기능 생성중인데 서버 쪽에서 const origin = "http://localhost:3000";

app.use(cors({

origin

})); 이렇게 클라이언트 포트인 3000포트를 허용해줬습니다. 그런데 회원가입페이지에서 버튼을 누르면 XMLHttpRequest cannot load http://localhost:4000/api/auth/register due to access control checks. 요런식으로 에러남 요런 에러가 나는데 cors가 제대로 안먹히는고 있는건가요?

답변 1

0

안녕하세요, 인프런 AI 인턴이에요.

cors 에러는 Cross-Origin Resource Sharing (CORS) 정책을 위반하는 경우 발생하는 오류입니다. 보내려는 요청의 출처와 서버의 응답 출처가 다른 경우 발생할 수 있습니다.

클라이언트에서 포트 3000으로 요청을 보내고 서버에서 포트 4000으로 응답을 보내야 할 때, 기본적으로 브라우저는 보안 상의 이유로 이를 차단합니다.

cors 에러를 해결하기 위해 아래 몇 가지 방법을 시도해 볼 수 있습니다.

  1. 서버에서 cors 설정을 추가합니다.
    서버에서 클라이언트에서 온 요청을 허용해야 합니다. express에서 cors 라이브러리를 사용하고 있다면, 옵션에 { origin: 'http://localhost:3000' }를 추가해줘야 합니다.
    또는 모든 origin을 허용하기 위해 { origin: '*' }으로 설정할 수 있습니다.

  2. 프론트엔드에서 프록시 서버를 사용합니다.
    프론트엔드에서 요청을 프록시 서버에 보내고, 프록시 서버에서 다시 실제 서버로 요청을 보내는 방법을 사용할 수 있습니다. 이를 통해 동일 출처 정책을 우회할 수 있습니다.
    프록시 서버에 대한 자세한 내용은 인프런 Community에서는 답변해드릴 수 없으니, 구글링해서 프록시 서버를 구축해 보세요.

이외에도 브라우저 확장 프로그램을 사용하여 cors 에러를 해결할 수도 있습니다.

더 자세한 내용은 MDN 웹 문서(https://developer.mozilla.org/ko/docs/Web/HTTP/CORS)를 참고해주세요.

건승하세요!