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

더 알아보기 (Learn more)