CORS 테스트 - Amazon Simple Storage Service

CORS 테스트

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 구성의 요소를 참조하세요.

JSON
[ { "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-HeadersAccess-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