OPTIONSObject
更新时间:2022-03-02
接口描述
浏览器在发送跨域请求之前会发送一个preflight请求(OPTIONS)并带上特定的来源域,HTTP方法和Header信息等给BOS以决定是否发送真正的请求,本接口即响应这种请求。
权限说明
OPTIONS Object操作不需要进行鉴权。
请求
-
请求语法
OPTIONS /<ObjectKey> HTTP/1.1 Host: <BucketName>.bj.bcebos.com Origin: Origin Access-Control-Request-Method: HTTPMethod Access-Control-Request-Headers: RequestHeader
-
请求参数
无
-
请求头域
名称 描述 是否必需 Origin 请求来源域,用来标识跨域请求,只允许一个方法。类型:字符串。默认值:无。 是 Access-Control-Request-Method 在实际请求中将会用到的方法,只允许一个方法。类型:字符串。取值为“PUT/GET/DELETE/POST/HEAD”,无默认值。 是 Access-Control-Request-Headers 在实际请求中会用到的除了简单头部之外的Headers,多个headers用逗号分割。类型:字符串。默认值:无。 否 -
请求元素
无
响应
-
响应头域
名称 描述 Access-Control-Allow-Credentials BOS的Server端是否允许客户端在请求中带cookie。需要客户端和Server端同时允许才能生效。BOS在请求通过时会返回允许,即值为 true
,大小写敏感。Access-Control-Allow-Headers 允许请求携带的Header的列表,如果请求中有不被允许的Header,则CORS规则匹配失败,返回不包含任何Access-Control-开头的头部。多个Headers也用逗号分隔。注意:返回仅仅包括此次请求的Headers列表,而不管配置文件中是否配置了更多被允许的Headers。 Access-Control-Allow-Methods 允许请求的HTTP方法,如果不允许该请求,则不包含该头部以及所有的Access-Control-*相关的头部。类型:字符串。注意:返回的是所有允许的allowedMethods列表,而不仅仅包括此次请求的method。 Access-Control-Allow-Origin 请求中包含的Origin,如果不允许的话将不包含该头部以及所有的Access-Control-*相关的头部。类型:字符串。 Access-Control-Expose-Headers 允许在请求端的JavaScript程序中访问的Headers的列表。与配置文件中的exposeHeaders对应。类型:字符串。 Access-Control-Max-Age 允许浏览器缓存preflight结果的时间,单位为秒。类型:整形。 -
响应元素
无
注意事项
- 当CORS收到OPTIONS请求后,会读取Bucket对应的CORS规则,然后进行相应的权限检查。整个检查会依次检查每一条规则,使用第一条匹配的规则来允许请求并返回对应的Header。如果所有规则都匹配失败则不附加任何CORS相关的Header。
CORS规则匹配成功必须满足三个条件:
- 请求的Origin必须匹配一项allowedOrigins中一项。
- OPTIONS请求的Access-Control-Request-Method头对应的方法必须匹配一项 allowedMethods中一项。
- OPTIONS请求的Access-Control-Request-Headers头包含的每个Header都必须匹配一项 allowedHeader项(只要有一个不符合则整体失败)。
示例
-
请求示例
OPTIONS /object HTTP/1.1 Host: BucketName.bj.bcebos.com Origin: http://www.example.com Access-Control-Request-Method: GET Access-Control-Request-Headers: x-bce-test
-
响应示例
HTTP/1.1 200 OK x-bce-request-id: 4db2b34d-654d-4d8a-b49b-3049ca786409 Date: Wed, 06 Apr 2016 06:34:40 GMT Access-Control-Allow-Origin: http://www.example.com Access-Control-Allow-Methods: GET, HEAD, DELETE Access-Control-Allow-Headers: x-bce-test Access-Control-Expose-Headers: user-custom-expose-header Access-Control-Max-Age: 3600 Access-Control-Allow-Credentials: true Content-Length: 0 Server: BceBos