HTTPfy

303 See Other

See another resource with GET: the result of this request is at the URL in Location.

303 at a glance

Code
303
Name
See Other
Class
3xx Redirection
Status
IANA-registered standard code
Defined in
RFC 9110, Section 15.4.4
Cacheable by default
No by default. Caches store it only when the response carries explicit freshness (Cache-Control max-age, s-maxage or Expires).

What 303 means

303 See Other redirects the client to a different resource and always means "fetch it with GET (or HEAD)". It is the textbook answer to a form POST: Post/Redirect/Get stops the browser from resubmitting the form when the user reloads. It can also point from a long-running job to its result.

What typically causes a 303

  • Post/Redirect/Get after form submission in web frameworks (Rails redirect_to ... status: :see_other, Starlette RedirectResponse with 303).
  • Linked-data servers redirecting from a concept URI to a document about it.

Fix it on the server

  • After a successful POST that renders a page, prefer 303 over 302 so the intent is explicit.
  • Turbo (Hotwire) requires 303 after non-GET form submissions to follow the redirect.

Fix it as a client or visitor

  • Follow with GET regardless of the original method.

Headers that go with 303

HeaderRole
LocationWhere to GET the result.

Example response

HTTP/1.1 303 See Other
Location: /orders/8841/confirmation
Content-Length: 0

Opens the HTTP headers tool with your URL filled in; it shows the status line and headers of every redirect hop.

Checking a whole domain's redirects? The HTTP status checker follows http, https, www and non-www variants and shows every hop.