HTTP 303 See Other vs 406 Not Acceptable
HTTP 303 (See Other) is a 3xx Redirection response, while 406 (Not Acceptable) is a 4xx Client Error response. 303 indicates that the server is redirecting to a different resource using GET, typically after a POST operation (Post/Redirect/Get pattern). In contrast, 406 means that the server cannot produce a response matching the Accept headers sent by the client.
Description
The server is redirecting to a different resource using GET, typically after a POST operation (Post/Redirect/Get pattern).
When You See It
After form submissions to prevent resubmission on browser refresh.
How to Fix
Follow the Location header with a GET request. This is intentional — part of the PRG pattern.
Description
The server cannot produce a response matching the Accept headers sent by the client.
When You See It
When requesting a content type the server doesn't support (e.g., Accept: application/xml when only JSON is available).
How to Fix
Adjust the Accept header to a format the server supports.
Key Differences
303 is a 3xx Redirection response, while 406 is a 4xx Client Error response.
HTTP 303: The server is redirecting to a different resource using GET, typically after a POST operation (Post/Redirect/Get pattern).
HTTP 406: The server cannot produce a response matching the Accept headers sent by the client.
You encounter 303 when after form submissions to prevent resubmission on browser refresh.
You encounter 406 when when requesting a content type the server doesn't support (e.g., Accept: application/xml when only JSON is available).
When to Use Which
For 303 (See Other): Follow the Location header with a GET request. This is intentional — part of the PRG pattern. For 406 (Not Acceptable): Adjust the Accept header to a format the server supports.