Security headers added to the GraphQL API
- Security
- Developer Experience
The GraphQL API now sends standard security headers. You don't need to do anything.
On December 7, 2026, we make two changes: the main asset hostnames start sending CORS headers, and the GraphQL API only accepts HTTPS. Most setups don't need any change.
CORS headers on asset hostnames
Asset responses on a.storyblok.com, a-us.storyblok.com, a-ap.storyblok.com and a-ca.storyblok.com will include Access-Control-Allow-Origin: *, and the CDN will answer CORS preflight (OPTIONS) requests. You can then load assets with fetch(), canvas, WebGL or web fonts from any website, without switching to an a2 hostname. URLs, caching and the Image Service stay the same.
Who needs to act
<img>, <video> or plain links: nothing to do.Access-Control-Allow-Origin header: remove it for asset URLs, or make it replace the header instead of adding a second one. Browsers reject responses with two values.OPTIONS requests to asset URLs itself: check that it accepts the CDN's preflight response.How to check
Request an asset through your proxy:
curl -sI -H "Origin: <https://example.com>" "https://<your-proxy-host>/f/<asset-path>" | grep -i access-control If this prints a value, your proxy adds the header itself. After the change, the CDN returns access-control-allow-origin: * and access-control-expose-headers: *. The a2 hostnames already do, so you can test against them today.
HTTPS only for the GraphQL API
From December 7, 2026, plain http:// requests to the GraphQL API (gapi.storyblok.com, gapi-us, gapi-ap and gapi-ca) will be redirected to https://.
http:// anyway.If any of your servers, scripts or integrations call the API over http://, switch them to https:// before December 7, 2026.