HTTP
출생지 및 출입 통제
수색…
비고
교차 출처의 리소스 공유 는 AJAX 와 같은 기술을 사용하여 도메인간에 동적 요청을 허용하도록 설계되었습니다. 스크립팅이 대부분의 작업을 수행하지만 HTTP 서버는 올바른 헤더를 사용하여 요청을 지원해야합니다.
클라이언트 : CORS (Cross-Origin Resource Sharing) 요청 보내기
Origin
헤더를 포함하여 Origin
교차 요청을 보내야합니다. 요청의 출처를 나타냅니다. 예를 들어,에서 출처 간 요청 http://example.com
에 http://example.org
다음과 같을 것이다 :
GET /cors HTTP/1.1
Host: example.org
Origin: example.com
서버는이 값을 사용하여 요청이 승인되었는지 여부를 판별합니다.
서버 : CORS 요청에 응답
CORS 요청에 대한 응답에는 Access-Control-Allow-Origin
에서 CORS 자원을 사용할 수 있도록 Access-Control-Allow-Origin
하는 Access-Control-Allow-Origin
헤더가 포함되어야합니다. 이 헤더는 세 가지 값 중 하나를 취할 수 있습니다.
- 원점. 이렇게하면 해당 출신의 요청 만 허용 됩니다 .
-
*
문자. 이는 모든 출처의 요청을 허용합니다. - 문자열
null
이렇게하면 CORS 요청 이 허용 되지 않습니다 .
예를 들어, 원산지 http://example.com
에서 CORS 요청을 받으면 example.com
이 허가 된 출처 인 경우 서버는 다음과 같은 응답을 보냅니다.
HTTP/1.1 200 OK
Access-Control-Allow-Origin: example.com
임의 출처 응답도이 요청을 허용합니다 (예 :
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
사용자 자격 증명 또는 세션 허용
사용자 자격 증명이나 사용자 세션이 CORS 요청과 함께 전송되도록 허용하면 서버가 CORS 요청을 통해 사용자 데이터를 유지할 수 있습니다. 이는 서버가 데이터를 제공하기 전에 사용자가 로그인했는지 확인해야하는 경우에 유용합니다 (예 : 사용자가 로그인 한 경우에만 작업 수행 - 자격 증명을 사용하여 CORS 요청을 보내야 함).
이는 OPTIONS
프리 플라이트 요청에 대한 응답으로 Access-Control-Allow-Credentials
헤더를 전송하여 프리 플라이트 된 요청에 대해 서버 측에서 수행 할 수 있습니다. 다음과 같은 CORS 요청의 경우 자원을 DELETE
하십시오.
OPTIONS /cors HTTP/1.1
Host: example.com
Origin: example.org
Access-Control-Request-Method: DELETE
HTTP/1.1 200 OK
Access-Control-Allow-Origin: example.org
Access-Control-Allow-Methods: DELETE
Access-Control-Allow-Credentials: true
Access-Control-Allow-Credentials: true
라인은 다음과 같은 DELETE
CORS 요청이 사용자 자격 증명과 함께 전송 될 수 있음을 나타냅니다.
프리 플라이트 요청
기본 CORS 요청은 두 가지 방법 중 하나만 사용할 수 있습니다.
- 도망
- 우편
몇 가지 선택 헤더 만 있습니다. POST CORS 요청은 세 가지 유형의 콘텐츠 만 선택할 수도 있습니다.
이 문제를 피하기 위해 다른 메서드, 헤더 또는 내용 형식을 사용하려는 요청은 먼저 액세스 제어 요청 헤더가 포함 된 OPTIONS
요청 인 프리 플라이트 요청을 실행 해야합니다. 예를 들어, 서버가 DNT
헤더가 포함 된 PUT
요청을 수락하는지 확인하는 프리 플라이트 요청입니다.
OPTIONS /cors HTTP/1.1
Host: example.com
Origin: example.org
Access-Control-Request-Method: PUT
Access-Control-Request-Headers: DNT
서버 : 프리 플라이트 요청에 응답
서버가 프리 플라이트 요청을 받으면 요청 된 메소드와 헤더를 지원하는지 확인하고 요청을 지원할 수 있는지 여부를 나타내는 응답과 기타 허용 된 데이터 (예 : 자격 증명)를 보내야합니다.
이는 액세스 제어 헤더 허용에 표시됩니다. 또한 서버는 프리 플라이트 응답을 캐시 할 수있는 기간을 나타내는 액세스 제어 Max-Age
헤더를 다시 보낼 수 있습니다.
프리 플라이트 요청에 대한 요청 - 응답주기는 다음과 같습니다.
OPTIONS /cors HHTP/1.1
Host: example.com
Origin: example.org
Access-Control-Request-Method: PUT
Access-Control-Request-Headers: DNT
HTTP/1.1 200 OK
Access-Control-Allow-Origin: example.org
Access-Control-Allow-Methods: PUT
Access-Control-Allow-Headers: DNT