HTTP 428 Precondition Required vs 504 Gateway Timeout
HTTP 428 (Precondition Required) is a 4xx Client Error response, while 504 (Gateway Timeout) is a 5xx Server Error response. 428 indicates that the server requires the request to be conditional (e.g., include If-Match header) to prevent lost updates. In contrast, 504 means that the server, acting as a gateway or proxy, did not receive a timely response from the upstream server.
Description
The server requires the request to be conditional (e.g., include If-Match header) to prevent lost updates.
When You See It
When an API requires optimistic concurrency control via ETags.
How to Fix
Fetch the resource first to get its ETag, then include If-Match in your update request.
Description
The server, acting as a gateway or proxy, did not receive a timely response from the upstream server.
When You See It
When an upstream server is too slow to respond within the proxy's timeout window.
How to Fix
Increase proxy timeout settings. Optimize upstream server performance. Check for long-running queries.
Key Differences
428 is a 4xx Client Error response, while 504 is a 5xx Server Error response.
HTTP 428: The server requires the request to be conditional (e.g., include If-Match header) to prevent lost updates.
HTTP 504: The server, acting as a gateway or proxy, did not receive a timely response from the upstream server.
You encounter 428 when when an API requires optimistic concurrency control via ETags.
You encounter 504 when when an upstream server is too slow to respond within the proxy's timeout window.
When to Use Which
For 428 (Precondition Required): Fetch the resource first to get its ETag, then include If-Match in your update request. For 504 (Gateway Timeout): Increase proxy timeout settings. Optimize upstream server performance. Check for long-running queries.