浏览器可以向OOS发送预检请求,来判断其是否可以发送特定源、HTTP方法和头的实际请求。当浏览器发送预检请求时,OOS根据Bucket的跨域配置来返回响应信息。如果Bucket没有配置跨域,那么OOS返回响应403 Forbidden。
请求语法
OPTIONS /ObjectName HTTP/1.1
Host: BucketName.oos-cn.ctyunapi.cn
Origin: Origin
Access-Control-Request-Method: HTTPMethod
Access-Control-Request-Headers: RequestHeader
请求头
名称 | 描述 | 是否必须 |
---|---|---|
Origin | 标示访问OOS的跨域请求的源。 例如:https://docs.oos-cn.ctyun.cn。 类型:字符串。 |
是 |
Access-Control-Request-Method | 标示在实际请求中,将被用到的HTTP方法。 类型:字符串。 |
是 |
Access-Control-Request-Headers | 在实际请求中将被发送的HTTP请求头,用逗号分隔。 类型:字符串。 |
否 |
响应头
响应头 | 描述 |
---|---|
Access-Control-Allow-Origin | 用户请求中发送的源。如果此源不被允许访问,那么OOS 不会返回此响应头。 类型:字符串。 |
Access-Control-Max-Age | 预检请求可以被缓存的时间,单位是秒。 类型:字符串。 |
Access-Control-Allow-Methods | 用户请求时,允许发送的HTTP方法列表。如果用户请求的方法不被允许,那么OOS不会返回此响应头。 类型:字符串。 |
Access-Control-Allow-Headers | 在实际请求中,浏览器发送的HTTP请求头列表,以逗号分隔。如果浏览器未发送此请求头或者发送的此请求头内容为空,OOS将不会返回此响应头;如果没有任何请求头被允许,OOS将返回403状态码,也不会返回任何以Access-Control开头的响应头。 类型:字符串。 |
Access-Control-Expose-Headers | 在实际响应中,JavaScript客户端可以访问的响应头列表,以逗号分隔。 类型:字符串。 |
请求示例
浏览器可以向OOS发送预检请求,来判断其是否可以从源https://docs.oos-cn.ctyun.cn向名为example-bucket的Bucket,发送PUT请求。
OPTIONS /exampleobject HTTP/1.1
Host: example-bucket.oos-cn.ctyunapi.cn
Origin: https://docs.oos-cn.ctyun.cn
Access-Control-Request-Method: PUT
响应示例
HTTP/1.1 200 OK
x-amz-request-id: 0e66553608684ccf0b7e71807582848a494b543f4143454749
Date: Wed, 21 Aug 2012 23:09:55 GMT
Access-Control-Allow-Origin: https://docs.oos-cn.ctyun.cn
Access-Control-Allow-Methods: PUT
Access-Control-Expose-Headers: x-amz-request-id
Server: CTYUN