HTTP 303 See Other

The answer is somewhere else, at the URL in Location, and the client should fetch it with GET — whatever method the original request used.

Defined in RFC 9110 §15.4.4 — 303 See Other · MDN reference

Where you meet HTTP 303 in production

The classic "Post/Redirect/Get" pattern: a form submission answers 303 pointing at a confirmation page, so refreshing the page does not resubmit the form. Also used by async APIs to point at a finished result.

Why you would test it

The redirect that is supposed to change POST into GET. Test that your client does exactly that, and that it does not resubmit the body to the new URL.

What your client should do about a 303

Follow the Location with a GET and no body. This is the one redirect where changing the method is the specified behaviour, not a quirk.

303 versus the codes it gets confused with

Endpoints that return 303

1 endpoint in this playground answers with 303. Every one is free, needs no signup, and can be called from the browser or with curl.

Questions about HTTP 303

What is Post/Redirect/Get?
Answering a successful POST with 303 to a page that shows the result, so the browser's history holds a GET. Reloading then re-fetches the result instead of re-posting the form.
Is a 303 cacheable?
The 303 itself is not cacheable by default, but the resource it points to can be.

Other redirection codes

All HTTP status codes · All 39 mock REST APIs · Getting started guide

Last updated