새벽_나그네
12시 지난 새벽
새벽_나그네
전체 방문자
오늘
어제
  • 분류 전체보기
    • TIL
    • DevLog
    • Algorithm
    • ComputerScience
    • etc

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • til
  • 내일배움캠프
  • 내일배움카드
  • 프로그래머스
  • 코린이
  • 코딩
  • 자기주도학습
  • 코딩프로젝트
  • docker
  • machine learning
  • 개발일지
  • portfolio
  • 스파르타코딩클럽
  • TodayILearned
  • 내일배움단
  • Github
  • 국비지원
  • Python
  • Selenium 4
  • AI트랙

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
새벽_나그네

12시 지난 새벽

[Trouble shooting] Django CORS 이슈
DevLog

[Trouble shooting] Django CORS 이슈

2022. 4. 27. 21:11

프로젝트를 진행할 때마다 겪었던 에러지만 언제나 명확한 해결법이 있었기에 제대로 들여다보지 않았던 문제입니다.

이번에 리액트와 장고를 이용한 프로젝트를 진행 중에 있는데 같은 문제가 생겨서 내용을 남깁니다.

 

CORS는 Cross Origin Resource Sharing의 약자로 도메인 또는 포트가 다른 서버의 자원을 요청하는 메커니즘이다.

이때 요청을 할 때는 cross-origin HTTP에 의해 요청됩니다.

하지만 동일 출처 정책(same-origin policy) 때문에 CORS 같은 상황이 발생하면 외부 서버에 요청한 데이터를 브라우저에서 보안 목적으로 차단합니다. 그로 인해 정상적으로 데이터를 받을 수 없습니다.

문제

localhost/:1 Access to fetch at 'http://127.0.0.1:8000/api/notes/' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.

문제 해결

https://github.com/adamchainz/django-cors-headers/blob/main/src/corsheaders/middleware.py

 

GitHub - adamchainz/django-cors-headers: Django app for handling the server headers required for Cross-Origin Resource Sharing (

Django app for handling the server headers required for Cross-Origin Resource Sharing (CORS) - GitHub - adamchainz/django-cors-headers: Django app for handling the server headers required for Cross...

github.com

cross origin HTTP 요청을 허가해주는 방법으로 문제를 해결할 수 있습니다.

첫 번째로는 django-cors-heagers를 설치합니다.

python -m pip install django-cors-headers

두 번째로는 INSTALLED_APPS에 corsheaders를 추가합니다.

세 번째로는 밑의 내용을 MIDDLEWARE에 추가합니다.

"corsheaders.middleware.CorsMiddleware",

네 번째로 WHITELIST에 자신이 사용하는 IP와 포트 정보를 입력해주면 해당 IP의 포트에서 요청하는 것은 허용이 되면서 정상 작동을 하는 것을 볼 수 있습니다.

두 번째와 세 번째는 원래 있는 항목에 추가하는 방식으로 진행하면 되고 네 번째는 새로 추가하는 내용입니다.

 

 

저작자표시 비영리 변경금지 (새창열림)

'DevLog' 카테고리의 다른 글

[DRF] 장고 REST Framework란? 그리고 Serialization  (0) 2022.05.04
[프로젝트 - Trouble shooting] 개발환경 세팅  (0) 2022.05.04
[Portfolio] GitHub Pages를 이용하여 Gatsby Site 무료로 배포하기  (2) 2022.04.21
[WIL]2203.2nd  (1) 2022.03.13
[Setting]개발 셋팅 후 실습 참고 자료  (0) 2022.03.10
    'DevLog' 카테고리의 다른 글
    • [DRF] 장고 REST Framework란? 그리고 Serialization
    • [프로젝트 - Trouble shooting] 개발환경 세팅
    • [Portfolio] GitHub Pages를 이용하여 Gatsby Site 무료로 배포하기
    • [WIL]2203.2nd
    새벽_나그네
    새벽_나그네
    IT, 프로그래밍, 정보, 스마트스토어

    티스토리툴바