附录:OPTIONS 对象
说明
浏览器可以向 Amazon S3 发送此预检请求,以确定它能否发送包含特定源、HTTP 方法和标头的实际请求。
Amazon S3 通过可让您在存储桶上添加 cors 子资源来支持跨源资源共享(CORS)。当浏览器发送此预检请求时,Amazon S3 通过评估在 cors 配置中定义的规则进行响应。
如果未在存储桶上启用 cors,则 Amazon S3 会返回 403
Forbidden 响应。
有关 CORS 的更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的启用跨源资源共享。
请求
语法
OPTIONS /ObjectNameHTTP/1.1 Host:BucketName.s3.amazonaws.com Origin:OriginAccess-Control-Request-Method:HTTPMethodAccess-Control-Request-Headers:RequestHeader
请求参数
此操作不引入任何特定的请求参数,但它可能包含实际请求所需的任何请求参数。
请求标头
| 名称 | 描述 | 必填 |
|---|---|---|
Origin |
标识向 Amazon S3 发出的跨源请求的源。例如,http://www.example.com。 类型:字符串 默认值:无 |
是 |
Access-Control-Request-Method |
标识将在实际请求中使用哪种 HTTP 方法。 类型:字符串 默认值:无 |
是 |
Access-Control-Request-Headers |
将在实际请求中发送的 HTTP 标头的以逗号分隔的列表。 例如,要放入采用服务器端加密的对象,此预检请求将确定它是否可以在请求中包含 类型:字符串 默认值:无 |
否 |
请求元素
此操作的实施不使用请求元素。
响应
响应标头
| 标题 | 说明 |
|---|---|
Access-Control-Allow-Origin |
您在请求中发送的源。如果不支持您的请求中的源,则 Amazon S3 不会在响应中包含此标头。 类型:字符串 |
Access-Control-Max-Age |
可以缓存预检请求的结果的时长(以秒为单位)。 类型:字符串 |
Access-Control-Allow-Methods |
在原始请求中发送的 HTTP 方法。如果不支持请求中的方法,则 Amazon S3 不会在响应中包含此标头。 类型:字符串 |
Access-Control-Allow-Headers |
浏览器可以在实际请求中发送的 HTTP 标头的以逗号分隔的列表。如果不支持任何请求的标头,Amazon S3 将不会在响应中包含该标头,而响应也不会包含任何带有 类型:字符串 |
Access-Control-Expose-Headers |
HTTP 标头的以逗号分隔的列表。此标头为 JavaScript 客户端提供了在针对实际请求的响应中访问这些标头的权限。 类型:字符串 |
响应元素
此操作的实施不返回响应元素。
示例
示例:向已启用 cors 的存储桶发送预检 OPTIONS 请求
浏览器可以将此预检请求发送到 Amazon S3,以确定它能否将实际的 PUT 请求从 http://www.example.com 源发送到名为 examplebucket 的 Amazon S3 存储桶。
示例请求
OPTIONS /exampleobject HTTP/1.1 Host: examplebucket.s3.amazonaws.com Origin: http://www.example.com Access-Control-Request-Method: PUT
示例响应
HTTP/1.1 200 OK x-amz-id-2: 6SvaESv3VULYPLik5LLl7lSPPtSnBvDdGmnklX1HfUl7uS2m1DF6td6KWKNjYMXZ x-amz-request-id: BDC4B83DF5096BBE Date: Wed, 21 Aug 2012 23:09:55 GMT Etag: "1f1a1af1f1111111111111c11aed1da1" Access-Control-Allow-Origin: http://www.example.com Access-Control-Allow-Methods: PUT Access-Control-Expose-Headers: x-amz-request-id Content-Length: 0 Server: AmazonS3