HTTP Status Code 303 = “See Other”
It tells the client:
“The requested resource can be found at another URL using a GET request.”
The server redirects the browser to a different URL after processing a request.
Common use case
303 is commonly used after:
- form submissions,
- file uploads,
- POST requests,
- payment processing,
- login/authentication flows.
It prevents users from resubmitting forms when refreshing the page.
Example flow
Client sends POST
http id=”v8d2qx”
POST /submit-form HTTP/1.1
Server response
http id=”f3k7nt”
HTTP/1.1 303 See Other
Location: /success
Browser automatically performs
http id=”q9m1yc”
GET /success HTTP/1.1
Difference between 302 and 303
| Code | Behavior |
| — | |
| 302 | Redirect, method may stay same |
| 303 | Always redirect using GET |
Common scenarios
- Payment gateway redirects
- OAuth login flow
- REST APIs
- Form submission success page
- Checkout confirmation page Developer examples
PHP
php id=”u4p9rb”
header(“Location: /success”, true, 303);
exit;
Node.js Express
js id=”a7t5zn”
res.redirect(303, ‘/success’);
Laravel
php id=”j2k8we”
return redirect(‘/success’, 303);
Why use 303?
It follows the Post/Redirect/Get (PRG) pattern:
- User submits form (
POST) - Server processes request
- Server redirects (
303) - Browser loads success page (
GET)
This avoids duplicate form submissions.
Related redirect codes
| Code | Meaning |
| — | |
| 301 | Permanent Redirect |
| 302 | Temporary Redirect |
| 303 | See Other |
| 307 | Temporary Redirect |
| 308 | Permanent Redirect |