demo ยท v135

What happens to your headers on a 303 redirect

The interop bug from the Fetch spec the change resolves: when the server responded 303 (or any redirect that causes the method to flip from POST to GET), older Chrome kept body-related headers like Content-Type and Content-Length. Other browsers stripped them. The table below traces a sample request through both the pre-135 and post-135 paths so you can see which headers survive each redirect.

aligned with Fetch spec in Chrome 135

POST /upload → 303 redirect → GET /done

request headerpre-135Chrome 135+
Authorizationkeptkept
Cookiekeptkept
Content-Typekeptstripped (method changed)
Content-Lengthkeptstripped (method changed)
Content-Encodingkeptstripped (method changed)
Content-Languagekeptstripped (method changed)
request bodykept (illegal — GET has no body)stripped
Referrer-Policypreserved naivelyre-evaluated against destination

POST /api/x → 307 redirect → POST /api/x-renamed

request headerpre-135Chrome 135+
Content-Typekeptkept (method unchanged)
request bodykeptkept

see also

scenario focus

Select a scenario to focus its rendered example and summary.