Skip to content

CORS on OVH Object Storage

A heads-up before you dive in: OVH offers two object-storage products that look similar but have different CORS workflows.

  • OVHcloud Object Storage (S3-compatible, “high-performance object storage”) — uses the standard S3 CORS API. The AWS-shaped JSON policy from the AWS S3 guide works against the OVH S3 endpoint.
  • OVHcloud Storage (Swift-based, “standard object storage”) — built on OpenStack Swift. CORS is set per-container as Swift headers, not as an S3 policy.

Relyn connects via the S3 endpoint when you choose the S3-compatible flavour. If that’s what you set up:

S3-compatible flavour — apply the policy

Section titled “S3-compatible flavour — apply the policy”

Use the AWS CLI pointed at the OVH endpoint. Replace the endpoint host with your region’s S3 endpoint (e.g. s3.gra.cloud.ovh.net for Gravelines):

Terminal window
aws s3api put-bucket-cors \
--endpoint-url https://s3.gra.cloud.ovh.net \
--bucket YOUR_BUCKET \
--cors-configuration '{
"CORSRules": [
{
"AllowedOrigins": ["https://studio.relyn.app", "http://localhost:5173"],
"AllowedMethods": ["GET", "PUT", "HEAD", "POST", "DELETE"],
"AllowedHeaders": ["*"],
"ExposeHeaders": ["ETag"],
"MaxAgeSeconds": 3600
}
]
}'

Then back in Relyn, open the bucket and click Diagnose.

We don’t operate OVH ourselves day-to-day, and their dashboard UI changes fairly often. Rather than risk listing screen-by-screen steps that go stale, we point you at OVH’s own documentation as the source of truth.

If you hit something that this page should mention, please drop a note to hello@relyn.app — we’ll expand the guide based on what real users run into.