303 See Other
The result of the request is at another URL, and the client should fetch it with GET regardless of the original method.
At a glance
- Status code
- 303 See Other
- Class
- 3xx, redirection, further action is needed to complete the request
- Defined in
- RFC 9110
- Cacheable by default
- by explicit headers only
- Response body
- Optional.
In detail
303 is the one redirect that explicitly changes the method to GET. That is its purpose: it converts the outcome of a POST into something the browser can safely display and reload.
This is the code behind post-redirect-get. A form POST returns 303 pointing at the result page, so refreshing the result never resubmits the form.
If refreshing a page after a form submission re-runs the submission, the response was 200 rather than 303.
Examples
HTTP/1.1 303 See Other
Location: /orders/8812
Cache-Control: no-storeThings that catch people out
- 303 discards the request body. If the target needs the data, it has to be persisted before the redirect.
- Do not use 303 for a resource that simply moved. It tells clients the method changed, which is a different statement from the URL changing.
Try it: HTTP Request Builder
Build a request with any method, headers and body, send it, and read the status line the server returns.
HTTP Request Builder
LOCAL · Browser-OnlyBuild and test HTTP requests with custom headers and body
Authentication
Headers
Generate Code
curl -X GET 'https://api.example.com/endpoint' \
-H 'Content-Type: application/json'Showing a sample URL. Enter your endpoint above to update the snippet.
Related HTTP status codes
All http status codes →302 Found
The resource is temporarily at a different URL. The original URL stays authoritative and should keep being used for future requests.
307 Temporary Redirect
Same as 302 but with a guarantee: the client must repeat the request with the original method and body, so a POST stays a POST.
201 Created
The request succeeded and created one or more new resources. The Location header carries the URL of the primary one.
304 Not Modified
The cached copy the client already holds is still current, so the server sent no body. This is what makes conditional requests cheap.
305 Use Proxy
Deprecated. It once told the client to repeat the request through the proxy named in Location, which turned out to be a security problem.
308 Permanent Redirect
A permanent redirect that preserves the request method and body. This is 301 without the historical POST to GET rewrite.
Tools for this
- HTTP Request Builder Free online HTTP request builder - build and test HTTP requests with custom headers and body
- HTTP Headers Checker Free online HTTP headers checker - view HTTP response headers for any URL