首页/云/云平台与虚拟化速查/对象存储跨域配置 CORS

对象存储跨域配置 CORS

浏览器直传对象存储时受同源策略限制,需要为桶配置 CORS 规则:允许的来源、方法与头信息,并暴露必要的响应头。

云平台与虚拟化速查云更新于 2026-10-13

对象存储 CORS 是什么

浏览器直接向对象存储上传或读取对象时受同源策略限制,需要为桶配置 CORS 规则:声明允许的页面来源、请求方法与请求头,并暴露必要的响应头。规则没配好时,前端看到的是跨域被拦截,而不是存储侧返回的业务错误,很容易误判方向。

基本信息

常见字段AllowedOrigin、AllowedMethod、AllowedHeader、ExposeHeader、MaxAgeSeconds
典型场景浏览器直传(PUT / POST)、读取私有签名链接、分片上传
生效范围桶级配置,桶内所有对象共用同一套规则
安全要求来源不要长期写成 *,按业务域名收窄
调试入口浏览器开发者工具的 Network 面板看 OPTIONS 往返
配套设置桶权限与临时凭证策略要与 CORS 规则一起收紧

典型使用场景

  • 前端表单直传对象存储,减轻应用服务器的带宽压力
  • 用签名链接在页面里预览图片或下载文件
  • 大文件分片上传,逐片向存储发起请求
  • 前端需要读取响应头(如 ETag)来校验上传结果
  • 多个站点域名共用同一个桶

一条典型 CORS 规则

一条典型 CORS 规则
[
  {
    "AllowedOrigin": ["https://app.example.com"],
    "AllowedMethod": ["GET", "PUT", "POST", "HEAD"],
    "AllowedHeader": ["*"],
    "ExposeHeader": ["ETag", "x-cos-request-id"],
    "MaxAgeSeconds": 600
  }
]

常见字段含义

字段作用注意点
AllowedOrigin允许的页面来源写具体域名,* 等于对全网开放
AllowedMethod允许的请求方法直传需要包含 PUT 或 POST
AllowedHeader允许携带的请求头临时凭证场景要包含 security-token 类头
ExposeHeader前端可读的响应头不配置时前端读不到 ETag
MaxAgeSeconds预检结果缓存时长调规则后要等缓存过期或换 URL 验证
预检请求(OPTIONS)失败的常见原因之一是未允许自定义头(如 x-cos-security-token、x-oss-security-token);先看 Network 里的 OPTIONS 响应,比猜前端代码快得多。
CORS 放宽不等于安全边界放宽:来源限制与桶的写权限要同时收窄。来源开成 * 又允许匿名写入,等于给全网站点开了一个上传接口。

易错点

  • 忘记允许自定义请求头导致携带临时凭证的直传全部失败
  • CORS 放开到 * 且桶可写,任何站点都能往桶里传文件
  • 只加 ExposeHeader 忘了允许对应方法,前端仍读不到响应头
  • 改了 CORS 规则后仍用旧 URL 验证,被预检缓存误导以为规则没生效
  • 来源按 http 与 https 区别对待时只配了一种,另一套环境访问被拦
  • 分片上传未允许相关方法或头,小文件能传、大文件必然失败

数据来源与参考

  • 阿里云 OSS 跨域设置文档
  • 腾讯云 COS 跨域配置文档
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌