cors 예제

Posted on

Restlet Framework는 CorsService라는 전용 서비스를 통해 CORS의 편리한 기본 제공 지원을 제공하며, 이 서비스는 단순히 초기화, 구성 및 응용 프로그램 서비스 목록에 추가될 수 있습니다. 이 예에서는 http://foo.example 원래 로드된 콘텐츠는 쿠키를 설정하는 http://bar.other 리소스에 대한 간단한 GET 요청을 만듭니다. foo.example의 콘텐츠에는 다음과 같은 자바스크립트가 포함될 수 있습니다. 이는 요청된 모든 헤더를 보낼 수 있음을 나타냅니다. 예를 들어 서버에서 Accept 헤더를 허용하지 않으면 해당 헤더가 응답에서 생략되고 브라우저가 호출을 거부합니다. CORS(원본 간 리소스 공유)는 브라우저 클라이언트에서 실행중인 스크립트가 다른 원본의 리소스와 상호 작용할 수 있도록 하는 프로토콜입니다. 이는 XMLHttpRequest 및 fetch뒤에 동일한 원본 정책 덕분에 JavaScript가 실행되는 위치와 동일한 원본에 거주하는 URL만 호출할 수 있기 때문에 유용합니다. 예를 들어 JavaScript 앱이 다른 도메인에서 실행 중인 API에 AJAX 호출을 수행하려는 경우 동일한 원본 정책으로 인해 Api가 차단됩니다. CORS 헤더의 내용이 올바르지 않을 수 있기 때문에 오류가 더 미묘할 수 있습니다. 예를 들어 액세스 제어 허용 메서드를 반환하지 않는 HTTP 메서드를 호출하려고 하는 경우 다음은 브라우저가 다른 도메인에서 리소스를 요청하는 경우의 간단한 CORS 예입니다. DomainX가 특정 리소스에 대해 DomainY에 요청을 한다고 가정해 보겠습니다. CORS는 HTTP 헤더를 사용하여 DomainX가 해당 리소스에 액세스할 수 있는지 여부를 결정합니다.

브라우저는 1-10줄이 전송되는 요청 헤더를 DomainY로 자동으로 보냅니다. 여기서 주의사항의 주요 HTTP 요청 헤더는 위의 10줄에 있는 Origin 헤더로, 이는 호출이 도메인 http://foo.example 콘텐츠에서 오고 있음을 보여줍니다. 여기서는 원본 간 리소스 공유가 어떻게 작동하는지 설명하는 세 가지 시나리오를 제시합니다. 이러한 모든 예제는 지원 브라우저에서 사이트 간 호출을 만드는 데 사용할 수 있는 XMLHttpRequest 개체를 사용합니다. 보안상의 이유로 브라우저는 스크립트 내에서 시작된 원본 간 HTTP 요청을 제한합니다. 예를 들어 XMLHttpRequest 및 가져오기 API는 동일한 원본 정책을 따릅니다. 즉, 이러한 API를 사용하는 웹 응용 프로그램은 다른 원본의 응답에 올바른 CORS 헤더가 포함되어 없는 한 응용 프로그램이 로드된 원본과 동일한 원본에서만 HTTP 리소스를 요청할 수 있습니다. 위의 예제에서 설정 쿠키 응답 헤더는 추가 쿠키도 설정합니다. 오류가 발생할 경우 사용된 API에 따라 예외가 발생합니다. 이 섹션에 포함된 JavaScript 스니펫(및 이러한 교차 사이트 요청을 올바르게 처리하는 서버 코드의 실행 인스턴스)은 http://arunranga.com/examples/access-control/ “작업 중”에서 찾을 수 있으며 지원하는 브라우저에서 작동합니다. 크로스 사이트 XMLHttpRequest.