Prueba de CORS - Amazon Simple Storage Service

Prueba de CORS

Para probar la configuración de CORS, se puede enviar una solicitud de comprobación previa de CORS con el método OPTIONS para que el servidor pueda responder si es aceptable para enviar la solicitud. Cuando Amazon S3 recibe una solicitud de comprobación previa, S3 evalúa la configuración de CORS para el bucket y usa la primera regla CORSRule que coincide con la solicitud entrante para habilitar una solicitud entre orígenes. Para que una regla coincida, se deben cumplir las siguientes condiciones:

  • El encabezado Origin de una solicitud de CORS a su bucket debe corresponderse con los orígenes del elemento AllowedOrigins de su configuración de CORS.

  • Los métodos HTTP que se especifiquen en el Access-Control-Request-Method en una solicitud de CORS a su bucket deben corresponderse con el método o métodos enumerados en el elemento AllowedMethods de su configuración de CORS.

  • Los encabezados mostrados en el encabezado Access-Control-Request-Headers de una solicitud de comprobación previa deben coincidir con los encabezados del elemento AllowedHeaders de la configuración de CORS.

A continuación, se muestra un ejemplo de configuración de CORS. Para crear una configuración de CORS, consulte Configuración de CORS. Para obtener más ejemplos de una configuración de CORS, consulte Elementos de una configuración de CORS.

JSON
[ { "AllowedHeaders": [ "Authorization" ], "AllowedMethods": [ "GET" "PUT", "POST", "DELETE" ], "AllowedOrigins": [ "http://www.example1.com" ], "ExposeHeaders": [ "x-amz-meta-custom-header" ] } ]

Para probar la configuración de CORS, puede enviar una comprobación de OPTIONS previa mediante el siguiente comando CURL. CURL es una herramienta de línea de comandos que se puede utilizar para interactuar con S3. Para obtener más información, consulte 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"

En el ejemplo anterior, el comando curl -v -x OPTIONS se usa para enviar una solicitud de comprobación previa a S3 para preguntar si S3 le permite enviar una solicitud PUT en un objeto desde el http://www.example1.com entre orígenes. Los encabezados Access-Control-Request-Headers y Access-Control-Expose-Headers son opcionales.

  • En respuesta al encabezado Access-Control-Request-Method en la solicitud OPTIONS de comprobación previa, Amazon S3 devuelve la lista de métodos permitidos si los métodos solicitados coinciden.

  • En respuesta al encabezado Access-Control-Request-Headers en la solicitud de OPTIONS de comprobación previa, Amazon S3 devuelve la lista de encabezados permitidos si los encabezados solicitados coinciden.

  • En respuesta al encabezado Access-Control-Expose-Headers en la solicitud de OPTIONS de comprobación previa, Amazon S3 devuelve la lista de encabezados permitidos si los encabezados solicitados coinciden con los encabezados permitidos a los que se puede acceder por scripts que se ejecutan en el navegador.

nota

Al enviar una solicitud de comprobación previa, si alguno de los encabezados de solicitud de CORS no está permitido, no se devuelve ninguno de los encabezados de CORS de respuesta.

En respuesta a esta solicitud de OPTIONS de comprobación previa, recibirá una respuesta de 200 OK. Para ver los códigos de error más comunes que se reciben al probar CORS y obtener más información para resolver los problemas relacionados con CORS, consulte Solución de problemas relacionados con 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