교차 출처 리소스 공유교차 출처 리소스 공유(Cross-origin resource sharing, CORS), 교차 출처 자원 공유는 웹 페이지 상의 제한된 리소스를 최초 자원이 서비스된 도메인 밖의 다른 도메인으로부터 요청할 수 있게 허용하는 구조이다.[1] 웹페이지는 교차 출처 이미지, 스타일시트, 스크립트, iframe, 동영상을 자유로이 임베드할 수 있다.[2] 다만 특정 교차 도메인 간(cross-domain) 요청, 특히 Ajax 요청은 동일-출처 보안 정책에 의해 기본적으로 금지된다. CORS는 교차 출처 요청을 허용하는 것이 안전한지 아닌지를 판별하기 위해 브라우저와 서버가 상호 통신하는 하나의 방법을 정의한다.[3] 순수하게 동일한 출처 요청보다 더 많은 자유와 기능을 허용하지만 단순히 모든 교차 출처 요청을 허용하는 것보다 더 안전하다. CORS의 사양은 원래 W3C 권고안으로 배포되었으나[4] 해당 문서는 쓸모 없어진(obsolete) 상태이다.[5] 현재 CORS를 재정의하면서 활발히 유지보수된 사양은 WHATWG의 Fetch Living Standard이다.[6] CORS의 동작 원리![]() 다른 도메인을 가리키거나 허용 목록에 포함되지 않은 헤더를 포함하는 <form> 태그를 사용하여 수행할 수 없는 자바스크립트에서 생성된 HTTP 요청의 경우 사양에서는 브라우저가 요청을 "사전 실행"(preflight)하여 HTTP를 사용하여 서버에서 지원되는 메서드를 요청하도록 규정한다. OPTIONS 요청 메소드를 사용하고 서버에서 "승인"되면 실제 HTTP 요청 메소드로 실제 요청을 보낸다. 또한 서버는 요청과 함께 "자격 증명"(쿠키 및 HTTP 인증 데이터 포함)을 보내야 하는지 여부를 클라이언트에게 알릴 수 있다.[7] 헤더CORS 관련 HTTP 헤더는 다음과 같다: 요청 헤더
응답 헤더
지원 브라우저
역사교차 출처 지원(Cross-origin support)은 원래 VoiceXML 브라우저의 안전한 교차 출처 데이터 요청을 허용하기 위해 VoiceXML 2.1[18]에 포함시키기 위해 텔미 네트웍스(Tellme Networks)의 맷 오시리, 브래드 포터, 마이클 보델에 의해 제안되었다. 이 메커니즘은 본질적으로 일반적인 것으로 간주되어 VoiceXML에만 국한되지 않으며 이후에 구현 참고로 분리되었다.[19] 주요 브라우저 공급업체가 참여한 W3C의 웹앱스(WebApps) 워킹 그룹은 공식적인 W3C 권장 사항 상태를 향한 궤도에 있는 W3C 작업 초안으로 NOTE를 공식화하기 시작했다. 2006년 5월에 첫 번째 W3C 작업 초안이 제출되었다.[20] 2009년 3월 초안은 "Cross-Origin Resource Sharing"[21]으로 이름이 바뀌었고 2014년 1월 W3C 권장 사항으로 승인되었다.[22] CORS vs JSONPCORS는 JSONP 패턴에 대한 현대적인 대안으로 사용될 수 있다. CORS의 이점은 다음과 같다.
JSONP의 가장 큰 장점은 CORS 지원 이전의 레거시 브라우저(Opera Mini 및 Internet Explorer 9 이하)에서 작동할 수 있다는 것이다. CORS는 이제 대부분의 최신 웹 브라우저에서 지원된다. 같이 보기각주
외부 링크
|
Portal di Ensiklopedia Dunia