Skip to content
大纲

OPTIONSObject

接口描述

浏览器在发送跨域请求之前会发送一个preflight请求(OPTIONS)并带上特定的来源域,HTTP方法和Header信息等给FOS以决定是否发送真正的请求,本接口即响应这种请求。

权限说明

OPTIONS Object操作不需要进行鉴权。

请求

请求语法

OPTIONS /<ObjectKey> HTTP/1.1
  Host: <BucketName>.fos.flymeyun.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-CredentialsFOS的Server端是否允许客户端在请求中带cookie。需要客户端和Server端同时允许才能生效。FOS在请求通过时会返回允许,即值为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.fos.flymeyun.com
Origin: http://www.example.com
Access-Control-Request-Method: GET
Access-Control-Request-Headers: x-fos-test

响应示例

HTTP/1.1 200 OK
x-fos-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-fos-test
Access-Control-Expose-Headers: user-custom-expose-header
Access-Control-Max-Age: 3600
Access-Control-Allow-Credentials: true
Content-Length: 0