django - CORS header

whybein·2020년 4월 5일
0

django

목록 보기
13/13
post-thumbnail

위코드 세션의 일부를 참고해 요약 정리한 내용입니다.

CORS는 Cross Origin Resource Sharing의 줄임말입니다. 즉, 도메인 주소가 다른 서버에 http request를 전송하는 걸 이야기 합니다. 예를 들어, naver.com 에서 api.google.com 으로 http request를 보내면 CORS가 되고 같은 host에서 포트만 달라도 CORS로 간주됩니다.

최신 웹 브라우저들이 보안상의 이유로 외부 Host로 접속하는 것을 차단하는 문제를 해결하기 위해 CORS표준이 제안되었고 요즈음엔 거의 일반화 되었습니다.

CORS 표준은 브라우저와 서버에 그들이 권한을 가진 원격 URL을 요청할 수 있는 방법을 제공하는 새로운 HTTP 헤더를 정의 해줍니다. 일부 유효성 검사 및 권한 부여는 서버에서 수행 할 수 있지만 일반적으로 이러한 헤더를 지원하고 부과하는 제한 사항을 준수하는 것은 브라우저의 책임입니다.

CORS 종류는 아래 4가지가 있습니다.

Simple Request

말 그대로 간단하기 때문에 막을 필요가 없는 요청입니다.

  • GET, HEAD, POST 중 한 가지 방식을 사용해야 함
  • POST일 경우 Context-type이 아래 셋 중 하나를 만족 해야 함
    • application/x-www-form-urlencoded
    • multipart/form-data
    • text/plain
    • Custom Header를 전송하지 않아야 함

Preflight Request

사전 요청을 보내서 요청을 보내도 되는지 허락을 받고 보내는 방법입니다.

Credential Request

Non-Credential Request

 

장고에서는 django-cors-headers를 설치해 사용하면 됩니다.

profile
Back-End Developer

0개의 댓글