CDN CORS for browser uploads

With Performance mode on, browser PUT needs bucket CORS. Panel shows for R2, AWS, IDrive, DigitalOcean after test.

CDN CORS for browser uploads

Allow the browser to PUT/GET objects on the bucket when CDN Performance mode bypasses the main app.

Where to find it

CDN form - after Test connection when Performance mode is on and the probe returns CORS required. Dedicated panels for R2, Amazon S3, IDrive e2, and DigitalOcean Spaces.

How it works

Desired rule (also used by auto-setup when credentials allow):

  • Origins: site origin + www / non-www twin
  • Methods: GET, PUT, HEAD
  • Headers: content-type, content-length (R2 rejects AllowedHeaders: ["*"])
  • Expose: ETag; MaxAge: 86400

With Performance mode off, traffic is proxied and the CORS panel stays hidden. Wasabi / Contabo / Other have no dedicated panel - still configure CORS at the provider if you use direct browser PUT.

Presigned upload TTL 86400 s; download 900 s when Performance mode is on.

Common problems

R2 rejects wildcard headers

Use explicit content-type and content-length only.

Contabo / Other silent

No dedicated CORS help UI - configure CORS in the provider console.

Related