Appendix: OPTIONS object - Amazon Simple Storage Service (original) (raw)
Description
A browser can send this preflight request to Amazon S3 to determine if it can send an actual request with the specific origin, HTTP method, and headers.
Amazon S3 supports cross-origin resource sharing (CORS) by enabling you to add acors
subresource on a bucket. When a browser sends this preflight request, Amazon S3 responds by evaluating the rules that are defined in thecors
configuration.
If cors
is not enabled on the bucket, then Amazon S3 returns a 403 Forbidden
response.
For more information about CORS, go to Enabling Cross-Origin Resource Sharing in the Amazon Simple Storage Service User Guide.
Requests
Syntax
OPTIONS /ObjectName HTTP/1.1
Host: BucketName.s3.amazonaws.com
Origin: Origin
Access-Control-Request-Method: HTTPMethod
Access-Control-Request-Headers: RequestHeader
Request Parameters
This operation does not introduce any specific request parameters, but it may contain any request parameters that are required by the actual request.
Name | Description | Required |
---|---|---|
Origin | Identifies the origin of the cross-origin request to Amazon S3. For example, http://www.example.com. Type: String Default: None | Yes |
Access-Control-Request-Method | Identifies what HTTP method will be used in the actual request. Type: String Default: None | Yes |
Access-Control-Request-Headers | A comma-delimited list of HTTP headers that will be sent in the actual request. For example, to put an object with server-side encryption, this preflight request will determine if it can include thex-amz-server-side-encryption header with the request. Type: String Default: None | No |
Request Elements
This implementation of the operation does not use request elements.
Responses
Header | Description |
---|---|
Access-Control-Allow-Origin | The origin you sent in your request. If the origin in your request is not allowed, Amazon S3 will not include this header in the response. Type: String |
Access-Control-Max-Age | How long, in seconds, the results of the preflight request can be cached. Type: String |
Access-Control-Allow-Methods | The HTTP method that was sent in the original request. If the method in the request is not allowed, Amazon S3 will not include this header in the response. Type: String |
Access-Control-Allow-Headers | A comma-delimited list of HTTP headers that the browser can send in the actual request. If any of the requested headers is not allowed, Amazon S3 will not include that header in the response, nor will the response contain any of the headers with theAccess-Control prefix. Type: String |
Access-Control-Expose-Headers | A comma-delimited list of HTTP headers. This header provides the JavaScript client with access to these headers in the response to the actual request. Type: String |
Response Elements
This implementation of the operation does not return response elements.
Examples
Example : Send a preflight OPTIONS request to a cors
enabled bucket
A browser can send this preflight request to Amazon S3 to determine if it can send the actual PUT request from http://www.example.com origin to the Amazon S3 bucket namedexamplebucket
.
Sample Request
OPTIONS /exampleobject HTTP/1.1
Host: examplebucket.s3.amazonaws.com
Origin: http://www.example.com
Access-Control-Request-Method: PUT
Sample Response
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