Free 15-min triage

The console says CORS. curl says 200.

CORS errors are blocking your frontend from your own API

Your backend works. curl gets a perfect response, but the browser console says blocked by CORS policy and the app renders nothing. CORS is not a server bug: it is the browser blocking cross-origin traffic until the server says your frontend's origin is allowed. A simple GET still reaches your server, and only the response is withheld. Anything that needs a preflight is different: if the preflight fails, the real request is never sent, so it never appears in your server logs. The fix AI tools reach for, allow everything, fails against the spec or strips real protection.

Fixed £4,500 · 3 days · pass-or-refund · next slot w/c 3 August

What actually breaks

Why every failure looks identical in the console

The browser deliberately tells your JavaScript almost nothing when CORS fails; the detail is withheld for security, so six different server problems collapse into one console message. That is why guessing at fixes goes so badly. Diagnosis happens in the network tab: find the OPTIONS request and its status, read which Access-Control headers actually came back, compare the Origin the browser sent against what the server allows, and check whether the cookie was ever attached. We trace each blocked request to its specific cause, move origin lists into per-environment configuration, answer preflights before auth runs, keep CORS headers on error responses, and enable credentialed CORS only where the design needs it.

What “done” looks like

We agree one of these in writing before you pay anything. If it passes, the sprint passed. If it doesn't, you get a full refund and keep the work.

Pass-or-refund guarantee

We agree the acceptance test before any work starts. If it doesn't pass within three working days, you get a full refund and keep every change I've committed. The risk is mine, not yours.

Get a yes/no on your blocker · free, 15 min