Eight CORS Errors You'll Actually Hit — and One Chrome Just Invented
Chrome's Private Network Access enforcement is breaking local development workflows that have worked for years, and the error message is easily mistaken for a standard CORS failure. Knowing to look for `more-private address space` in the console saves hours of chasing a phantom regression.
CORS errors are notoriously cryptic, but they boil down to three root causes: a missing header, a wrong header value, or a new browser rule. This breakdown walks through eight specific error messages, each with the raw browser output, the underlying mechanism, and the fix. The first seven cover the usual suspects—wildcard credentials mismatches, duplicate headers, missing preflight methods, and cached preflight results—while the eighth tackles Chrome's Private Network Access policy, a restriction that began rolling out last year and is behind a wave of "it worked yesterday" localhost failures.
A quick-reference table maps each error's keyword directly to its cause and solution, turning a ten-minute debugging session into a ten-second lookup. The piece also dismantles three persistent myths: `mode: 'no-cors'` returns an opaque, unreadable response; browser extensions only fix your machine; and JSONP is a dead-end for modern applications.
The Private Network Access error is a policy change masquerading as a configuration bug, and its gradual rollout means teams will encounter it at different times with no obvious trigger.
Most CORS debugging time is wasted on the wrong layer—developers tweak front-end code when the fix is always a server or proxy configuration change.
The quick-reference approach of matching error keywords to fixes treats CORS as a pattern-recognition problem rather than a protocol deep-dive, which matches how most developers actually troubleshoot.
Listing `no-cors` as a CORS solution in documentation is actively harmful; it silences the error while guaranteeing the data is unusable.