测试 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 配置的元素。
要测试 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
是可选的。
-
为响应预检
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