CORS 구성을 테스트하려면 OPTIONS
메서드와 함께 CORS 사전 요청을 전송하여 요청 전송이 허용되는 경우 서버가 응답하도록 할 수 있습니다. Amazon S3가 사전 요청을 받으면 S3에서 버킷에 대한 CORS 구성을 평가하고 수신된 요청과 일치하는 첫 번째 CORSRule
규칙을 사용하여 교차 오리진 요청을 허용합니다. 규칙이 일치하려면 다음 조건이 충족되어야 합니다.
-
버킷에 대한 CORS 요청의
Origin
헤더는 CORS 구성의AllowedOrigins
요소에 있는 오리진과 일치해야 합니다. -
버킷에 대한 CORS 요청의
Access-Control-Request-Method
에 지정된 HTTP 메서드는 CORS 구성의AllowedMethods
요소에 나열된 메서드와 일치해야 합니다. 사전 요청의
Access-Control-Request-Headers
헤더에 나열된 헤더는 CORS 구성의AllowedHeaders
요소에 있는 헤더와 일치해야 합니다.
다음은 CORS 구성 예제입니다. CORS 구성을 만들려면 CORS 구성을 참조하세요. CORS 구성의 자세한 예제는 CORS 구성의 요소를 참조하세요.
[
{
"AllowedHeaders": [
"Authorization"
],
"AllowedMethods": [
"GET"
"PUT",
"POST",
"DELETE"
],
"AllowedOrigins": [
"http://www.example1.com"
],
"ExposeHeaders": [
"x-amz-meta-custom-header"
]
}
]
CORS 구성을 테스트하려면 다음 CURL 명령을 사용하여 사전 요청 OPTIONS
검사를 보낼 수 있습니다. CURL은 S3와 상호 작용하는 데 사용할 수 있는 명령줄 도구입니다. 자세한 내용은 CURL
curl -v -X OPTIONS \ -H "Origin: http://www.example1.com" \ -H "Access-Control-Request-Method: PUT" \ -H "Access-Control-Request-Headers: Authorization" \ -H "Access-Control-Expose-Headers: x-amz-meta-custom-header"\ "http://bucket_name.s3.amazonaws.com/object_prefix_name"
위 예제에서 curl -v -x OPTIONS
명령은 S3에 사전 요청을 보내 S3가 교차 오리진 http://www.example1.com
에서 객체에 대한 PUT
요청을 보내는 것을 허용하는지 문의하는 데 사용됩니다. 헤더 Access-Control-Request-Headers
및 Access-Control-Expose-Headers
는 선택 사항입니다.
-
Amazon S3는 사전
OPTIONS
요청의Access-Control-Request-Method
헤더에 대한 응답으로 요청된 메서드가 일치하는 경우 허용된 메서드 목록을 반환합니다. -
Amazon S3는 사전
OPTIONS
요청의Access-Control-Request-Headers
헤더에 대한 응답으로 요청된 헤더가 일치하는 경우 허용된 헤더 목록을 반환합니다. -
Amazon S3는 사전
OPTIONS
요청의Access-Control-Expose-Headers
헤더에 대한 응답으로 요청된 헤더가 브라우저에서 실행되는 스크립트에서 액세스할 수 있는 허용 헤더와 일치하는 경우 허용된 헤더 목록을 반환합니다.
참고
사전 요청을 전송할 때 CORS 요청 헤더 중 하나라도 허용되지 않는 경우 응답 CORS 헤더는 반환되지 않습니다.
이 사전 OPTIONS
요청에 대한 응답으로 200 OK
응답을 받게 됩니다. CORS를 테스트할 때 수신되는 일반적인 오류 코드와 CORS 관련 문제 해결을 위한 자세한 내용은 CORS 문제 해결을 참조하세요.
< HTTP/1.1 200 OK < Date: Fri, 12 Jul 2024 00:23:51 GMT < Access-Control-Allow-Origin: http://www.example1.com < Access-Control-Allow-Methods: GET, PUT, POST, DELETE < Access-Control-Allow-Headers: Authorization < Access-Control-Expose-Headers: x-amz-meta-custom-header < Access-Control-Allow-Credentials: true < Vary: Origin, Access-Control-Request-Headers, Access-Control-Request-Method < Server: AmazonS3 < Content-Length: 0