0. 前提条件:

  • Cloudflare域名或代理域名
  • 开通R2对象存储并配置自定义域

假设R2的自定义域名配置为cloud.abc.com

1. 配置CORS策略

将上面配置的R2域名及需要访问资源的个人网站域名添加到AllowedOrigins字段,域名后不要加路径或斜杠。
其他字段如下:

[
  {
    "AllowedOrigins": [
      "http://127.0.0.1",
      "http://localhost",
      "https://cloud.abc.com"
    ],
    "AllowedMethods": [
      "GET",
      "POST",
      "HEAD",
      "DELETE",
      "PUT"
    ],
    "AllowedHeaders": [
      "*"
    ],
    "ExposeHeaders": [
      "*"
    ],
    "MaxAgeSeconds": 3600
  }
]

即使在 R2 的 CORS 中允许了相关的域名,跨域名通过 R2 Public URL 访问存储桶的文件时依然会遇到 HTTP 403 导致 CORS 问题。

2. 关闭Hotlink保护

进入域名设置Scrape Shield选项,关闭Hotlink保护。
图1

3. 修改响应头

进入选项规则 -> Overview -> Create rule创建转换规则。
图2

选择修改响应头,
主机名匹配R2的域名https://cloud.abc.com
设置字段

Access-Control-Allow-Methods = GET,POST,PUT,DELETE,HEAD
Access-Control-Allow-Origin = *
Vary = Origin

图3