cors 예제

다음은 첫 번째 교차 도메인 요청(OPTIONS one)을 사용한 예제 교환입니다. 예를 들어 노드를 사용하는 경우 다음과 같이 setHeader()를 사용할 수 있습니다. 액세스 제어- 허용-원산지. 이 헤더는 리소스에 액세스할 수 있는 원본을 지정합니다. 예를 들어 모든 원본에서 액세스를 허용하려면 다음과 같이 이 헤더를 설정할 수 있습니다. 헤더를 생략하면 CORS 요청이 실패합니다. 헤더 값은 Origin 요청 헤더(위의 예와 같이)를 에코하거나 모든 원본의 요청을 허용하는 `*`가 될 수 있습니다. 모든 사이트가 데이터에 액세스할 수 있도록 하려면 `*`를 사용하는 것이 좋습니다. 그러나 데이터에 액세스할 수 있는 사람을 보다 세밀하게 제어하려면 헤더에서 실제 값을 사용합니다. 위의 예제의 요청 헤더에는 쿠키 헤더가 포함되어 있으므로 액세스 제어-허용-원본 헤더 값이 “*”인 경우 요청이 실패합니다.

그러나 실패하지 않습니다 : 액세스 제어 – 허용 원본 헤더의 값은 “*” 와일드카드가 아닌 “http://foo.example”(실제 원본)이므로 자격 증명인식 콘텐츠가 호출 웹 콘텐츠로 반환됩니다. 이 예에서는 http://foo.example 원래 로드된 콘텐츠는 쿠키를 설정하는 http://bar.other 리소스에 대한 간단한 GET 요청을 만듭니다. foo.example의 콘텐츠에는 다음과 같은 JavaScript가 포함될 수 있습니다. 자산에 대한 이러한 요청이 선택되지 않으면 브라우저의 보안이 위험할 수 있습니다. 예를 들어 브라우저가 하이재킹의 대상이 될 수 있거나 브라우저가 맹목적으로 악성 코드를 다운로드할 수 있습니다. 따라서 많은 최신 브라우저가 이러한 위험을 완화하기 위해 보안 정책을 따릅니다. 이 처리는 발신자에 대 한 완전히 투명 하지만 우리는 실제로 브라우저의 개발 도구를 사용 하 여 무슨 일이 일어나는지의 힌트를 가질 수 있습니다., 파이어 폭스 내에서 예를 들어 Firebug. 후자의 경우 네트워크 탭을 사용하여 실행되는 호출과 교환되는 CORS 헤더를 확인할 수 있습니다. 이 예제에서는 액세스 제어 허용 헤더가 OPTIONS 요청에서 요청된 헤더를 다시 에코합니다. 이는 요청된 모든 헤더를 보낼 수 있음을 나타냅니다. 예를 들어 서버에서 Accept 헤더를 허용하지 않으면 해당 헤더가 응답에서 생략되고 브라우저가 호출을 거부합니다. 이것은 단지 A이기 때문에 두 번째로 좋은 시나리오이지만 시간이 제한되어 있습니다.

일시적으로 문제를 해결하려면 브라우저가 CORS 메커니즘을 무시하도록 만들 수 있습니다 – 예를 들어 ACAO Chrome 확장 프로그램을 사용하거나 다음 플래그로 Chrome을 실행하여 완전히 비활성화: cdn.keycdn.com 요청을 받으면 허용하거나 구성된 CORS 설정에 따라 요청된 리소스에 대한 원본 도메인 액세스를 거부합니다.