2xx: success
| Code | Name | Meaning |
|---|---|---|
| 200 | OK | The request worked |
| 201 | Created | A new resource was created (APIs) |
| 204 | No Content | Success, with nothing to return |
3xx: redirects
| Code | Name | Meaning |
|---|---|---|
| 301 | Moved Permanently | The page has a new address for good; search engines move ranking to it |
| 302 | Found | Temporary redirect |
| 304 | Not Modified | The browser's cached copy is still valid |
| 307 / 308 | Temporary / Permanent Redirect | Like 302 / 301 but the request method is kept |
4xx: client errors
| Code | Name | Usual cause |
|---|---|---|
| 400 | Bad Request | Malformed request or invalid data |
| 401 | Unauthorized | Login or token missing or wrong |
| 403 | Forbidden | Logged in, or not, but not allowed: file permissions, firewall or WAF rule |
| 404 | Not Found | Wrong URL, deleted page, or a rewrite rule problem |
| 405 | Method Not Allowed | e.g. a POST to a page that only accepts GET |
| 413 | Content Too Large | Upload bigger than the server limit |
| 429 | Too Many Requests | Rate limit reached |
5xx: server errors
| Code | Name | Usual cause |
|---|---|---|
| 500 | Internal Server Error | An error in the application code or configuration; check the error log |
| 502 | Bad Gateway | The proxy could not get a valid answer from the application (PHP-FPM, Node.js stopped or crashed) |
| 503 | Service Unavailable | Overloaded or in maintenance |
| 504 | Gateway Timeout | The application took too long to answer: slow queries or external calls |
For 5xx errors the browser rarely tells you much. The web server's error log and the application log give the real reason.