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

Cloudflare R2通过Express JS重定向时OPTIONS预请求403禁止问题

解决Cloudflare R2 OPTIONS预请求403 Forbidden问题

1. 检查并配置R2存储桶的CORS规则

这是核心环节——R2自身的CORS规则必须明确允许OPTIONS预请求,否则仅调整DNS设置无法解决问题。

在R2存储桶的CORS配置中添加如下规则(按需修改参数):

[
  {
    "AllowedOrigins": ["https://你的前端域名.com", "*"], // 生产环境建议指定具体源,*仅用于测试
    "AllowedMethods": ["OPTIONS", "GET", "HEAD"], // 必须包含OPTIONS方法
    "AllowedHeaders": ["*"], // 若前端发送自定义头部,需替换为具体头部列表
    "ExposeHeaders": [],
    "MaxAgeSeconds": 86400
  }
]

注意:带凭证的跨域请求中,AllowedHeaders不能用*通配符,需明确列出前端传递的所有自定义头部。

2. 确保重定向/代理环节正确传递预请求头部

如果自定义DNS通过转发或代理导向R2,需确认:

  • OPTIONS请求的Origin、Access-Control-Request-Method、Access-Control-Request-Headers三个关键头部未被过滤或修改,需完整传递给R2。
  • 优先使用反向代理而非302重定向:预请求对重定向兼容性差,代理模式能直接转发请求并返回R2的CORS响应,避免额外的跳转问题。

3. 排查Cloudflare防火墙与页面规则拦截

若自定义DNS托管在Cloudflare,检查以下规则:

  • 防火墙规则:进入「防火墙」→「防火墙规则」,确认没有针对OPTIONS方法的拦截策略,如有则调整为允许。
  • 安全级别:高安全级别可能误拦截OPTIONS预请求,可临时调低测试,或添加例外规则允许你的前端源发送OPTIONS请求。
  • 页面规则:确保没有页面规则对OPTIONS请求设置缓存(预请求不应被缓存),或修改其响应行为。

4. 用命令行验证请求有效性

通过curl模拟预请求,排查响应问题:

curl -v -X OPTIONS \
  -H "Origin: https://你的前端域名.com" \
  -H "Access-Control-Request-Method: GET" \
  https://你的R2自定义域名.com/资源路径

若返回200,检查响应头部是否包含Access-Control-Allow-Origin、Access-Control-Allow-Methods;若仍返回403,说明R2的CORS配置未生效,或请求被中间环节拦截。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 19:40:35