浏览器在发送跨域请求之前会发送一个preflight请求(OPTIONS)并带上特定的来源域,HTTP方法和header信息等给OSS以决定是否发送真正的请求。 OSS可以通过Put Bucket cors接口来开启Bucket的CORS支持,开启CORS功能之后,OSS在收到浏览器preflight请求时会根据设定的规则评估是否允许本次请求。如果不允许或者CORS功能没有开启,返回403 Forbidden。
请求语法OPTIONS /ObjectName HTTP/1.1
Host: BucketName.oss-cn-hangzhou.aliyuncs.com
Origin:Origin
Access-Control-Request-Method:HTTP method
Access-Control-Request-Headers:Request Headers
请求Header
名称 | 描述 |
Origin | 请求来源域,用来标示跨域请求。 类型:字符串 默认值:无 |
Access-Control-Request-Method | 表示在实际请求中将会用到的方法。 类型:字符串 默认值:无 |
Access-Control-Request-Headers | 表示在实际请求中会用到的除了简单头部之外的headers。 类型:字符串 默认值:无 |
名称 | 描述 |
Access-Control-Allow-Origin | 请求中包含的Origin,如果不允许的话将不包含该头部。 类型:字符串 |
Access-Control-Allow-Methods | 允许请求的HTTP方法,如果不允许该请求,则不包含该头部。 类型:字符串 |
Access-Control-Allow-Headers | 允许请求携带的header的列表,如果请求中有不被允许的header,则不包含该头部,请求也将被拒绝。 类型:字符串 |
Access-Control-Expose-Headers | 允许在客户端JavaScript程序中访问的headers的列表。 类型:字符串 |
Access-Control-Max-Age | 允许浏览器缓存preflight结果的时间,单位为秒 类型:整型 |
OPTIONS /testobject HTTP/1.1
Host: oss-example.oss-cn-hangzhou.aliyuncs.com
Date: Fri, 24 Feb 2012 05:45:34 GMT
Origin:http://www.example.com
Access-Control-Request-Method:PUT
Access-Control-Request-Headers:x-oss-test
HTTP/1.1 200 OK
x-oss-request-id: 5051845BC4689A033D0022BC
Date: Fri, 24 Feb 2012 05:45:34 GMT
Access-Control-Allow-Origin: http://www.example.com
Access-Control-Allow-Methods: PUT
Access-Control-Expose-Headers: x-oss-test
Connection: keep-alive
Content-Length: 0
Server: AliyunOSS
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
要解决浏览器发送跨域OPTIONS请求至OSS时遇到的403 Forbidden问题,确保OSS正确响应并允许跨域请求,您需要按照以下步骤配置Bucket的CORS规则:
登录阿里云OSS管理控制台: 首先,登录到您的阿里云账号,并进入OSS管理控制台。
选择目标Bucket: 在Bucket列表中找到您希望配置CORS的Bucket,并点击该Bucket名称进入详情页面。
配置CORS规则:
x-oss-test1
)。
Origin
头部指定的所有有效源域名,例如http://www.example.com
。PUT
、GET
等。x-oss-test1,x-oss-test2
。Access-Control-Max-Age
来指定浏览器缓存预检请求结果的时间,减少后续相同类型请求的预检次数。完成上述配置后,OSS会在收到preflight OPTIONS请求时,根据设定的CORS规则评估请求是否被允许。如果请求符合规则,OSS会返回带有相应Access-Control-Allow-*头部的响应,从而允许浏览器继续进行实际的跨域请求。例如,响应中应包含与请求Origin匹配的Access-Control-Allow-Origin
头部,允许的HTTP方法列表通过Access-Control-Allow-Methods
头部指示,以及允许的自定义请求头通过Access-Control-Allow-Headers
头部列出。
务必注意,配置变更可能需要一定时间才能在全球范围内生效,请在调整后给予适当时间验证效果。如果问题依旧,请检查配置细节或咨询阿里云技术支持。