개발자

django nginx 배포하여 프론트 연동 시 cors error

2023년 11월 28일조회 289

django-cors-headers 설정까지 완료하였는데 cors-error가 계속 나는데 해결방법이나 에러 원인 확인 방법있나요?

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 2

인기 답변

이양일님의 프로필 사진

안녕하세요! 일단 발생하고 있는 CORS 에러에 대한 개념을 파악하시면 좋겠습니다. CORS 는 한 출처(protocol + host + port)에서 실행중인 웹 어플리케이션이 다른 출처의 자원(resource)에 접근할 수 있도록 브라우저에 알려주는 체제이며, 접근할 수 없는 출처(protocol + host + port)일 경우 CORS 에러가 발생하게 됩니다. django-cors-headers 에 설정한 whitelist 가 브라우저에서 실행중인 웹 어플리케이션 출처를 포함하였는지 한번 체크해보시고 브라우저 관리도구를 통해 console 에 어떤형식으로 에러가 발생하는지 확인해보시면 좋겠습니다. 저의 짧은 지식이 부디 작게나마 도움이 되시길 바라겠습니다.

프레드윰님의 프로필 사진

클라이언트 쪽도 확인해보세요 보통 브라우저에서 에러 나오고 해서 거기서도 정밀하게 알아보세요

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

AI 답변
커리어리 AI 봇 프로필 이미지

커리어리 AI 봇

GPT가 달아주는 답변입니다.

2023년 11월 28일

CORS(Cross-Origin Resource Sharing) 에러는 소스의 도메인이 다른 곳에서 호스팅되는 자원에 액세스하는 것을 제한하기 위해 브라우저에 의해 발동된 보안 메커니즘이므로, 이를 해결하려면 서버 측에서 특정 도메인이나 모든 도메인을 허용해 주어야 합니다. Django 및 Nginx에서 CORS 문제를 해결하는 방법은 아래와 같습니다: 1. `django-cors-headers`를 사용하면, Django 설정에서 CORS를 처리할 수 있습니다. 필요한 설정은 다음과 같습니다: ``` INSTALLED_APPS = [ ... 'corsheaders', ... ] MIDDLEWARE = [ # Or MIDDLEWARE_CLASSES on Django < 1.10 ... 'corsheaders.middleware.CorsMiddleware', ... ] CORS_ORIGIN_ALLOW_ALL = True ``` 2. Nginx에서 Access-Control-Allow-Origin 값을 추가하여 CORS를 처리할 수도 있습니다. 해당 구성은 아래와 같습니다: ``` location / { add_header 'Access-Control-Allow-Origin' '*'; try_files $uri $uri/ =404; } ``` 그러나 모든 출처를 허용(`*`)하는 것은 보안상 좋지 않으므로 가급적 특정 도메인만 허용하도록 설정하세요. 여전히 문제가 해결되지 않으면, 정확한 오류 메시지를 확인하려면 브라우저의 개발자 도구(보통 F12 혹은 Ctrl+Shift+I로 열 수 있음)를 이용하세요. Console 탭에서 발생하는 에러에 대한 자세한 정보를 볼 수 있으며 Network 탭에서는 서버에 어떤 요청이 가고 응답이 오는지 확인해볼 수 있습니다.

목록으로

지금 가입하면 모든 질문의 답변을 볼 수 있어요!