CORS 테스트
CORS 테스트
CORS 구성을 테스트하려면 OPTIONS 메서드로 CORS 사전 확인(preflight) 요청을 보내 서버가 요청을 보내도 되는지 응답하게 할 수 있어요. Amazon 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 구성 요소를 참고하세요.
CORS 규칙 구성과 문제 해결에 대한 지침은 AWS re:Post Knowledge Center의 Amazon S3에서 CORS를 구성하고 cURL로 CORS 규칙을 확인하는 방법을 참고하세요.
JSON — 다음은 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에 사전 확인 요청을 보내, 교차 출처 http://www.example1.com에서 객체에 PUT 요청을 보내도 되는지 물어보는 거예요. Access-Control-Request-Headers와 Access-Control-Expose-Headers 헤더는 선택 사항이에요.
- 사전 확인
OPTIONS요청의Access-Control-Request-Method헤더에 대한 응답으로, 요청한 메서드가 일치하면 Amazon S3는 허용된 메서드 목록을 반환해요. - 사전 확인
OPTIONS요청의Access-Control-Request-Headers헤더에 대한 응답으로, 요청한 헤더가 일치하면 Amazon S3는 허용된 헤더 목록을 반환해요. - 사전 확인
OPTIONS요청의Access-Control-Expose-Headers헤더에 대한 응답으로, 요청한 헤더가 브라우저에서 실행되는 스크립트가 접근할 수 있는 허용 헤더와 일치하면 Amazon S3는 허용 헤더 목록을 반환해요.
참고 사전 확인 요청을 보낼 때 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