// http 3xx · redirection

HTTP 303 See Other

Fetch the resource with a GET at another URL.

What HTTP 303 See Other means

303 See Other tells the client to retrieve the resource with a GET at the URL in the `Location` header, regardless of the original method. It's the classic Post/Redirect/Get pattern that stops a form from being resubmitted on refresh.

Which category is it?

303 is a 3xx code — Redirection. 3xx means further action is needed to complete the request, usually because the resource lives at a different URL.

Example 303 response

POST /checkout HTTP/1.1

HTTP/1.1 303 See Other
Location: /orders/981

How to check a 303

  1. After a form POST, confirm the response is 303 with a Location header pointing to a page that can be fetched with GET.
  2. Refresh the resulting page: it should reload via GET without a browser warning about resubmitting the form.
  3. Make sure the redirect target does not itself redirect back to the form, which would create a loop.

303 compared with similar codes

  • 302: 302 behavior for POST varies by client; 303 states clearly that the next request must be a GET.
  • 307: 307 keeps the original method and body. 303 deliberately switches to GET.

303 See Other: common questions

What is the Post/Redirect/Get pattern?

After handling a POST, the server replies with a 303 redirect to a result page. The browser then does a GET, so reloading the page does not submit the form twice.

Other redirection (3xx) codes