What HTTP 303 means
303 is the correct response after a successful form POST: redirect to a result page that the browser loads with GET. Refreshing that page then doesn’t resubmit the form. This is the Post/Redirect/Get pattern.
Retrying
Not applicable: this isn’t an error.
Example response
HTTP/1.1 303 See Other
Date: Wed, 21 Oct 2026 10:30:00 GMT
Location: /orders/1001
How to return 303
res.redirect(303, '/new-path');
from fastapi.responses import RedirectResponse
return RedirectResponse("/new-path", status_code=303)
http.Redirect(w, r, "/new-path", http.StatusSeeOther)
location /old-path {
return 303 /new-path;
}
Related status codes
- 302 Found : A temporary redirect to the URL in the Location header.
- 307 Temporary Redirect : A temporary redirect that keeps the original method and body.
- 201 Created : The request succeeded and a new resource was created.
Other 3xx status codes
300 Multiple Choices · 301 Moved Permanently · 302 Found · 304 Not Modified · 307 Temporary Redirect · 308 Permanent Redirect
See the full list of HTTP status codes.
Sources
Spotted a mistake? Email hello@devtoolsmith.com and we’ll fix it.
Frequently asked questions
What does HTTP 303 See Other mean?
HTTP 303 See Other redirects the client to another URL, which it should fetch with GET. 303 is the correct response after a successful form POST: redirect to a result page that the browser loads with GET. Refreshing that page then doesn’t resubmit the form. This is the Post/Redirect/Get pattern.