4284xx Client ErrorMedium
HTTP 428 Precondition Required
Defined in RFC 6585
What Does HTTP 428 Mean?
The server requires the request to be conditional, typically to prevent the 'lost update' problem.
Common Causes
- 1PUT/PATCH request missing If-Match header
- 2Server requires conditional headers for update operations
- 3Optimistic concurrency control enforcement
Impact
- ⚠Update request rejected until conditional headers are added
- ⚠Must fetch the resource first to get the current ETag
Ad Space – header
Developer Fix
For web developers and application engineers
- 1Include If-Match or If-Unmodified-Since headers on updates
- 2Fetch the resource ETag before making modifications
- 3Implement proper optimistic concurrency in the client
Server Admin Fix
For system administrators and DevOps engineers
- 1Document the required conditional headers
- 2Return helpful error messages explaining what conditions are needed
- 3Consider if mandatory conditions are appropriate for all endpoints
Ad Space – after-fix
Frequently Asked Questions
Why does the server require conditional requests?
To prevent the 'lost update' problem where two clients modify a resource simultaneously and one overwrites the other's changes. Conditional headers ensure you're updating the version you think you are.
How is 428 different from 412?
428 means you didn't include any conditional headers at all. 412 means you included them but the conditions evaluated to false (resource changed). 428 is 'conditions missing', 412 is 'conditions failed'.
Related HTTP Status Codes
About the Author
Web Infrastructure Team
Verified against official RFC specifications and real-world server configurations. HTTP status code behavior confirmed across Apache, Nginx, and Cloudflare.