You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cloudflare R2:为不同允许源配置不同方法的CORS策略

正确的Cloudflare R2 CORS策略配置

你的配置无效的核心原因是JSON语法错误——两个CORS规则对象之间缺少逗号,导致Cloudflare无法解析整个配置。除此之外,还需要补充必要的CORS头部配置,确保浏览器预请求(OPTIONS)能正常通过。

以下是满足你需求的正确配置:

[
  {
    "AllowedOrigins": ["https://example.com"],
    "AllowedMethods": ["GET", "PUT", "POST", "DELETE"],
    "AllowedHeaders": ["*"],
    "ExposeHeaders": ["ETag"]
  },
  {
    "AllowedOrigins": ["*"],
    "AllowedMethods": ["GET"],
    "AllowedHeaders": ["*"],
    "ExposeHeaders": ["ETag"]
  }
]

关键说明:

  • 修复JSON语法:在两个规则对象之间添加逗号(,),确保JSON格式合法,这是配置生效的前提。
  • 域名格式修正:将https://example.com/改为https://example.com,末尾的斜杠会被视为路径的一部分,可能导致域名匹配失败。
  • 补充必要头部:
    • AllowedHeaders: ["*"]:允许所有请求头部,确保OPTIONS预请求能通过,避免浏览器拦截后续实际请求。
    • ExposeHeaders: ["ETag"]:暴露常用的响应头部给前端,比如ETag用于缓存验证,你可以根据需求添加更多头部。
  • 规则顺序:将自有域名的规则放在前面,Cloudflare R2会按顺序匹配规则,优先匹配更具体的域名规则,避免通用规则覆盖自有域名的全方法权限。

验证方法:

配置保存后,你可以通过浏览器开发者工具的网络面板查看请求的响应头部,确认Access-Control-Allow-Origin等CORS相关头部是否正确返回;也可以使用curl发送OPTIONS请求测试:

curl -X OPTIONS -H "Origin: https://example.com" https://<你的R2存储桶域名>/<对象路径>

如果返回的响应中包含Access-Control-Allow-Origin: https://example.com以及对应的Access-Control-Allow-Methods,说明配置生效。

内容的提问来源于stack exchange,提问作者user1607016

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 18:37:18