django로 Backend 개발을 하면서 cors와 관련된 문제가 발생해 이에 대한 조치를 진행하였다. 한편으로 cors가 도대체 뭐길래 문제가 발생하는건지 궁금해서 관련 내용을 검색하고 나름 정리한 내용을 posting 해본다.
1. CORS 란
Domain 또는 Port가 다른 Server의 자원을 요청하는 메커니즘으로 서로 다른 Domain 또는 Port를 사용하는 client와 server가 통신을 통해 resource를 공유하는 매커니즘으로 이해했다.
우리 입장에선 너무나 당연하게 받아들이게 되는 내용이다.2. 근데 왜 문제가 발생하는가?
HTTP요청은 기본적으로 Cross-Site HTTP Request가 가능하다. '<img>' 태그로 다른 Domain에 있는 image resource를 가져오거나, '<link>'태그로 다른 Domain의 CSS resource를 가져올 수 있다.
문제는 <script> tag 내에서 타 Domain의 resource를 request하는 경우 Cross-Site HTTP Request 는 'Same Origin Policy'라는 정책을 적용받게 되어 요청을 실패하게 된다. 이를 해결하기 위해 backend 측엔 cors 관련 완화기능을 반영해야 한다.