CORS

❓질문

CORS(Cross-Origin Resource Sharing)는 무엇이며 왜 필요한가요?


💡 조사하기전 내가 알고 있던 내용

CORS 약자의 뜻은 교차 출처 리소스 공유입니다.
브라우저는 원래 SOP(동일 출처 정책)가 기본으로 설정 되어있습니다 즉 같은 출처가 아니면 서로 데이터를 주고 받지 못한다는거죠 그렇기에 브라우저(프론트엔드)와 서버(백엔드)의 통신이 정상적으로 이루어질려면 동일 출처가 아닌 타 출처끼리도 통신이 가능해야 됩니다.

보통 CORS의 경우 서버에서 이를 설정 할 수 있는데 그 내용은 특정 출처에서 들어오는 접근이나 헤더에 특정한 값이 있어야한다던지 이런식으로 설정하여 안전하게 원하는 출처만을 선택해 서로 자원을 접근 할 수 있게합니다.


🏫 정리한 내용

대부분 위 내용과 동일합니다 그러나 헤더에 특정한 값이 있어야한다던지 라는 지식이 틀린거 같아 정정합니다.

먼저 CORS의 설정에는 Access-Control-Allow-@ 라는 속성을 설정할 수 있고 여기서 CORS와 관련된 설정을 할 수 있습니다.

하지만 헤더 설정인 Access-Control-Expose-Headers 는 헤더에 특정한 값이 있어야 되는것이 아닌 브라우저에서 접근할 수 있는 응답 헤더 지정을 할 수 있는 속성입니다.
즉 이러한 값을 보낼 수 있으니 이 값을 받아서 추가적인 로직을 통해 검증을 한다던지 할 수 있다는겁니다.

그 외에도 쿠키등을 보낼 수 있는지 여부 , 허용되는 HTTP 메서드 지정 등의 다양한 CORS 설정이 있습니다.