HTTP

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

1.

428 is a 4xx Client Error response, while 504 is a 5xx Server Error response.

2.

HTTP 428: The server requires the request to be conditional (e.g., include If-Match header) to prevent lost updates.

3.

HTTP 504: The server, acting as a gateway or proxy, did not receive a timely response from the upstream server.

4.

You encounter 428 when when an API requires optimistic concurrency control via ETags.

5.

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.

Learn More