Error Codes Wiki

HTTP 303 See Other — Post-Redirect-Get Pattern

Informational3xx redirection

Overview

HTTP 303 See Other tells the client to retrieve the resource at a different URI using a GET request, commonly used after POST form submissions.

Key Details

  • 303 explicitly requires the client to use GET for the redirect, regardless of original method
  • Core of the Post/Redirect/Get (PRG) pattern preventing duplicate form submissions
  • Unlike 302, the HTTP spec guarantees the redirected request will be GET
  • The redirect target is specified in the Location header
  • Browser will not resubmit POST data when following a 303 redirect

Common Causes

  • Server redirecting after successful form POST to prevent resubmission on refresh
  • API endpoint redirecting to a result page after processing
  • OAuth flow redirecting back to application after authorization
  • Server converting a non-GET request to a GET for the response resource

Steps

  1. 1If you receive 303 unexpectedly, check the Location header for the redirect target
  2. 2Implement PRG pattern: POST to /submit → 303 redirect → GET /success
  3. 3In your server code, return 303 status with Location header after processing POST
  4. 4Ensure your HTTP client follows redirects and switches to GET method
  5. 5Test with curl -v -L to see the full redirect chain and method switching

Tags

http303see-otherpost-redirect-getform-submission

More in 3xx Redirection

Frequently Asked Questions

303 guarantees the redirect uses GET, while 302 technically should preserve the method (though browsers often switch to GET anyway).