

# 附录：OPTIONS 对象
<a name="RESTOPTIONSobject"></a>

## 说明
<a name="RESTOPTIONSobject-description"></a>

浏览器可以向 Amazon S3 发送此预检请求，以确定它能否发送包含特定源、HTTP 方法和标头的实际请求。

Amazon S3 通过可让您在存储桶上添加 `cors` 子资源来支持跨源资源共享（CORS）。当浏览器发送此预检请求时，Amazon S3 通过评估在 `cors` 配置中定义的规则进行响应。

如果未在存储桶上启用 `cors`，则 Amazon S3 会返回 `403 Forbidden` 响应。

 有关 CORS 的更多信息，请参阅《Amazon Simple Storage Service 用户指南》**中的[启用跨源资源共享](https://docs.amazonaws.cn/AmazonS3/latest/userguide/cors.html)。

## 请求
<a name="RESTOPTIONSobject-requests"></a>

### 语法
<a name="RESTOPTIONSobject-requests-syntax"></a>

```
1. OPTIONS /{{ObjectName}} HTTP/1.1
2. Host: {{BucketName}}.s3.amazonaws.com 
3. Origin: {{Origin}}
4. Access-Control-Request-Method: {{HTTPMethod}}
5. Access-Control-Request-Headers: {{RequestHeader}}
```

### 请求参数
<a name="RESTOPTIONSobject-requests-request-parameters"></a>

 此操作不引入任何特定的请求参数，但它可能包含实际请求所需的任何请求参数。

### 请求标头
<a name="RESTOPTIONSobject-requests-request-headers"></a>


|  名称  |  描述  |  必填  | 
| --- | --- | --- | 
| Origin | 标识向 Amazon S3 发出的跨源请求的源。例如，http://www.example.com。<br />类型：字符串 <br />默认值：无 |  是  | 
| Access-Control-Request-Method | 标识将在实际请求中使用哪种 HTTP 方法。<br />类型：字符串 <br />默认值：无 |  是  | 
| Access-Control-Request-Headers | 将在实际请求中发送的 HTTP 标头的以逗号分隔的列表。<br />例如，要放入采用服务器端加密的对象，此预检请求将确定它是否可以在请求中包含 `x-amz-server-side-encryption` 标头。<br />类型：字符串 <br />默认值：无 |  否  | 

### 请求元素
<a name="RESTOPTIONSobject-requests-request-elements"></a>

此操作的实施不使用请求元素。

## 响应
<a name="RESTOPTIONSobject-responses"></a>

### 响应标头
<a name="RESTOPTIONSobject-responses-response-headers"></a>


| 标题 | 说明 | 
| --- | --- | 
| Access-Control-Allow-Origin | 您在请求中发送的源。如果不支持您的请求中的源，则 Amazon S3 不会在响应中包含此标头。<br />类型：字符串 | 
| Access-Control-Max-Age | 可以缓存预检请求的结果的时长（以秒为单位）。<br />类型：字符串 | 
| Access-Control-Allow-Methods  | 在原始请求中发送的 HTTP 方法。如果不支持请求中的方法，则 Amazon S3 不会在响应中包含此标头。<br />类型：字符串 | 
| Access-Control-Allow-Headers  | 浏览器可以在实际请求中发送的 HTTP 标头的以逗号分隔的列表。如果不支持任何请求的标头，Amazon S3 将不会在响应中包含该标头，而响应也不会包含任何带有 `Access-Control` 前缀的标头。<br />类型：字符串 | 
| Access-Control-Expose-Headers  | HTTP 标头的以逗号分隔的列表。此标头为 JavaScript 客户端提供了在针对实际请求的响应中访问这些标头的权限。<br />类型：字符串 | 

### 响应元素
<a name="RESTOPTIONSobject-responses-response-elements"></a>

此操作的实施不返回响应元素。

## 示例
<a name="RESTOPTIONSobject-examples"></a>

### 示例：向已启用 `cors` 的存储桶发送预检 OPTIONS 请求
<a name="RESTOPTIONSobject-examples-example-1-configure-cors---single-rule"></a>

 浏览器可以将此预检请求发送到 Amazon S3，以确定它能否将实际的 PUT 请求从 http://www.example.com 源发送到名为 `examplebucket` 的 Amazon S3 存储桶。

#### 示例请求
<a name="RESTOPTIONSobject-examples-example-1-configure-cors---single-rule-sample-request"></a>

```
1. OPTIONS /exampleobject HTTP/1.1
2. Host: examplebucket.s3.amazonaws.com 
3. Origin: http://www.example.com
4. Access-Control-Request-Method: PUT
```

#### 示例响应
<a name="RESTOPTIONSobject-examples-example-1-configure-cors---single-rule-sample-response"></a>

```
 1. HTTP/1.1 200 OK
 2. x-amz-id-2: 6SvaESv3VULYPLik5LLl7lSPPtSnBvDdGmnklX1HfUl7uS2m1DF6td6KWKNjYMXZ
 3. x-amz-request-id: BDC4B83DF5096BBE
 4. Date: Wed, 21 Aug 2012 23:09:55 GMT
 5. Etag: "1f1a1af1f1111111111111c11aed1da1"
 6. Access-Control-Allow-Origin: http://www.example.com
 7. Access-Control-Allow-Methods: PUT
 8. Access-Control-Expose-Headers: x-amz-request-id
 9. Content-Length: 0
10. Server: AmazonS3
```

## 相关资源
<a name="RESTOPTIONSobject-related-resources"></a>
+  [GetBucketCors](https://docs.amazonaws.cn/AmazonS3/latest/API/API_GetBucketCors.html) 
+  [DeleteBucketCors](https://docs.amazonaws.cn/AmazonS3/latest/API/API_DeleteBucketCors.html) 
+  [PutBucketCors](https://docs.amazonaws.cn/AmazonS3/latest/API/API_PutBucketCors.html) 