다른 도메인(리소스: 프로토콜,호스트,포트)의 자원을 쓰려면 자원의 주인이 허락한 규약을 지켜야하는데 이러한 규약을 표준한 것이 CORS 입니다.
(기존 브라우저 정책은 서로 다른 도메인으로부터 리소스가 칠요한 경우 보안상의 이유로 다른 도메인의 리소스를 가져오는 것이 불가능했으나 이를 해결하고자 등장한 표준 기술이 CORS이며 리소스를 요청할때 접근 권한을 부여하는 작동하는 원리(매커니즘))
참고: 왜 필요할까?
(CORS가 없이 모든 곳에서 데이터를 요청할 수 있게 된다면, 다른 사이트에서 원래 사이트를 흉내낼 수 있게 된다.
만약 기존 사이트와 완전히 동일하게 동작하도록 하여 사용자가 로그인을 하도록 하고, 로그인했던 세션 또는 토큰을 탈취하여 악의적으로 정보를 꺼내오거나 다른 사용자의 정보를 입력하는 등 헤킹을 할 수 있다.
하지만 이런 공격을 할 수 없도록 브라우저에서 보호하고, 필요한 경우에만 서버와 협의하여 요청할 수 있도록 하기 위해서 필요한 것이다.)
CORS는 어떻게 동작하나?
Simple requests인 경우..
서버로 요청을 합니다. 서버의 응답이 왔을 때 브라우저가 요청한 Origin과 응답한 헤더 Access-Control-Request-Headers의 값을 비교하여 유효한 요청이라면 리소스를 응답합니다. 만약 유효하지 않은 요청이라면 브라우저에서 이를 막고 에러가 발생합니다.