Table Of Contents
- 100-Series: Informational
- 200-Series: Success
- 300-Series: Redirection
- 400-Series: Uh-Oh, Client Error
- 400 Bad Request (Like in this post’s featured image – because we’ve all seen it!)
- 401 Unauthorized
- 402 Payment Required
- 403 Forbidden
- 404 Not Found
- 405 Method Not Allowed
- 406 Not Acceptable
- 408 Request Time-out
- 409 Conflict
- 410 Gone
- 411 Length Required
- 415 Unsupported Media Type
- 417 Expectation Failed
- 429 Too Many Requests
- 451 Unavailable For Legal Reasons
- 500-Series: Oh No, Server Error
Welcome to the Ultimate HTTP Error Code List! This guide will endeavor to list each and every standardized HTTP error code you might come across when browsing the internet (or serving content on your webserver to the masses). While only the 400-Series and 500-Series are actually technically errors, it’s a good idea to review each potential server response in order to have a full understanding of what really should be happening in certain situations – that way, we can have a more thorough understanding of why the errors themselves are occurring.
This kind of response sometimes includes headers that are optional, and always includes a Status-Line. As a note, as the HTTP/1.0 standards didn’t include any 100-Series responses it is imperative that a server does not send a 100-Series response to any client using that version of the standards.
100 Continue is designed in order to cut down on the inefficiency of sending large bodies of data with inappropriate headers. A client would send Expect: 100-Continue as a header in its first request, including the appropriate additional headers, and if approved it would get in return a 100 Continue status code from the server – and then the client would send the body. In the case the headers are inappropriate and a 100 Continue status can’t be provided, the server should provide a 417 Expectation Failed response.
101 Switching Protocols
The client had, in a previous request, asked the server to switch protocols and the server is responding saying that it’s accepted that choice and now switched protocols.
Specific to WebDAV, a given request might involve file operations where multiple sub-requests are required – this could lead to a potentially very long process. A 102-Processing response is provided in order to assure the client that it’s original request hasn’t timed out, and that there isn’t a real response to deal with yet – but that there should be one coming, once the process is complete.
This series of responses is intended to be provided in different cases where the server has understood, accepted, and processed the request. Good stuff!
Anyone used to web development or API development is very, very happy to see the numbers ‘200.’
Depending on the method of the request, a 200 OK response will include content or information related to the request (such as a web page for us to view – without even having known behind the scenes there even was a 200 OK involved – or API results for us to use).
Even better than your request being fulfilled successfully – the client’s request has also resulted in the creation of a new resource on the server. Congrats!
The client’s request, in this case, may take a while to actually process. It has absolutely been accepted for processing – however, the results of processing may vary (and the server will notify when something happens or doesn’t).
203 Non-Authoritative Information
Since HTTP/1.1, servers that are acting as a transforming proxy – ie. they take the original server’s 200 OK response, then transform the content and provide the transformed content to the client – will respond 203 Non-Authoritative Information along with the transformed content.
204 No Content
Good news! The server successfully processed your request. Possibly bad news, though – as the server is deciding to not return any content following with that process.
205 Reset Content
This is exactly like the 204 response – where the server successfully processed the request and returned no content – however the server is additionally asking the client to reset the document view.
206 Partial Content
To enable resuming or splitting downloads, sometimes clients will send a header to let a server know that it only wants part of the content. When the server receives these range headers, it responds with the appropriate range of data along with the 206 Partial Content response.
Specific to WebDAV, there may have been a number of requests made at once and this response contents many XML elements that each contain their own actual individual 200-Series (or other) status, corresponding to the request responsible for that individual XML element.
208 Already Reported
Again specific to WebDAV, a DAV’s binding’s members had already been determined and enumerated in a previous request and aren’t being returned by this response that includes the 208 Already Reported response.
226 IM Used
The request for a resource is being responded to with the current instance having applied one or many IMs (instance-manipulations).
These responses indicate that the client is either going to (in the case of GET or HEAD requests) immediately redirect, or will be encouraged to redirect to another place.
300 Multiple Choices
This response indicates there are many different options for the client to be redirected to (for instance, for multiple video formats during redirection, or a list of files with different extensions).
301 Moved Permanently
This response indicates that this and all future requests should be redirected to the URL that is indicated. This has serious implications and is the conversation of many SEO-driven conversations, and should be researched before instituting.
In the anarchy of the internet, some browsers and standards organizations disagree and we find ourselves in places like the 302 Found response. To deal with people misusing 302 Found instead of 301 Moved Permanently, the standards for 303 and 307 were introduced in HTTP/1.1. For all intents and purposes, though, a 302 Found redirect behaves (to the average user) the same as 301 Moved Permanently.
303 See Other
Since HTTP/1.1, 303 See Other is used to indicate there’s new or different content that should be served if there was a GET request. The difference with 303 See Other and 302 or 301, though, is that in the case of POST, PUT, DELETE, the server has successfully processed the request, however, there is now a new location that should be served to the client with a GET request.
304 Not Modified
304 Not Modified is used in the case the request’s headers included If-Modified-Since or If-None-Match – and it can tell the client to use a cached version of the resource should the content on the server not have changed since the cached version was created (which helps the internet be more happy, as less data is re-transmitted unnecessarily).
305 Use Proxy
Since HTTP/1.1, but not supported by most browsers for security purposes, a 305 Use Proxy response includes a proxy address that must be used in order to access the resource. Be warned when using proxies as you never know who’s looking at your data!
306 Switch Proxy
This response is actually no longer used. It once had a purpose – which is the same as 305.
307 Temporary Redirect
Again, since HTTP/1.1, 307 Temporary Redirect indicates that browsers and clients should use the redirect URI instead of the original for this particular request, however, in contrast to 302 any future request should attempt to use the original resource again (unless, of course, that original resource again responds with a 307).
308 Permanent Redirect
This behaves like 301 and 302, however, it does not allow the HTTP method to change. This means that actions such as submitting a form can be successfully completed with a 308 Permanent Redirect where they may fail with 301 or 302 redirects.
400-Series: Uh-Oh, Client Error
Now, for the first half of the meat and potatoes of our article: the 400-Series of HTTP responses, of Client Errors. This means that your client is misbehaving. While this is annoying to hear from a user or colleague when trying to use or otherwise consume the internet, it’s not necessarily catastrophic – you can usually fix any 400-Series HTTP status error by trying the following steps:
- Try private browsing, such as the incognito mode in Chrome.
- Try clearing cache and cookies.
- Try a different modern browser altogether.
- Try a different computer altogether.
- Try a different internet connection (ie. if you’re at work – try it at home) altogether.
Lo and behold, an exhaustive list of most of the popular 400-Series Client Error HTTP response codes follows:
400 Bad Request (Like in this post’s featured image – because we’ve all seen it!)
Pretty simple, here, and pretty common to see – the server didn’t understand your request; it was malformed or had some other issue, and we can’t process it.
Again – pretty simple. You have to be logged in or have some elevated rights in order to see this content. Log in, or contact the site/service’s administrators about your user level.
402 Payment Required
This is mostly unused and was originally designed for an internet-based micro-payment scheme that was never implemented. Fortunately (or unfortunately?), some giants like Google use it in their API responses in order to express the fact you’ve reached your daily limit and should probably upgrade your account.
The request was fine; the server is refusing to serve content. This is a very, very popular error message to see if you’re installing, configuring, upgrading or dealing with WordPress, Magento, or any other kind of CMS. Ensure that your web server’s user (ie. www-data in the case of Apache) ‘owns’ the directories/files, and that all users have the proper rights to see the directories/files. Pro Tip: For Ubuntu web servers, Google ‘chmod -R’ and ‘chown -R’.
404 Not Found
We can’t find the requested resource. It might be available in the future – and the client is permitted to submit additional requests for this content. This commonly happens if a post is deleted or still a draft, or if for whatever reason a link was mistyped and is malformed.
405 Method Not Allowed
This is commonly seen if you try to use a GET method of requesting content that requires POST, PUT or DELETE methods. What it’s saying is that the method (or request type) was incorrect.
406 Not Acceptable
The request was fine, the content is available but your Accept headers in the request stipulate that the client will not accept the type of content the web server wants to provide. If you’re seeing this error, make sure to research Content negotiation.
408 Request Time-out
The server simply took too long, according to how long the client decided it wanted to wait, before sending any response. Try again later! Or – try a different client (or modifying yours, if you have the power!).
This request couldn’t be served because there’s a conflict within the request itself. The client confused the server by contradicting itself! Try editing your request to make more sense.
This resource has been PURGED! All clients should remove their cache of this resource, and not request it again. Also, search engines should de-index this resource. This actually rarely is the required response, and a simple 404 Not Found can be used.
411 Length Required
Simply: the request is required to provide the length of the expected response, which it didn’t, and so we receive a 411. Try modifying your request to specify the length of the requested content.
415 Unsupported Media Type
Most commonly the request is using a media type (such as image format) that the server or resource doesn’t support – so try using a format that’s supported!
417 Expectation Failed
There is an Expect request-header in the client’s request that the server can’t handle. Try editing or removing your Expect request header.
429 Too Many Requests
There have been too many requests in a given period of time, and the server is implementing rate limiting on the client. We at Error Codes Pro have a detailed article on this error and how to fix it!
There’s been a legal requirement to remove this content – so it’s been removed. Interestingly enough, this code was chosen to honor the book Fahrenheit 451.
“I’ve only written one science-fiction bokk: ‘Fahrenheit 451.’ That book is a book based on real facts and my hatred of people who destroy books.” – Ray Bradbury
500-Series: Oh No, Server Error
What’s worse than a client misbehaving? Hint: it’s not a trick question – but situations that prove disastrous for businesses of any size, the answer, of course, is servers misbehaving! Please note that the actual technical reason a server serves a 500-Series message could be one of literally thousands – if not more – reasons. Please try Google or special, dedicated resources like serverfault to search for your unique and interesting scenario – and hopefully a solution! Let’s look into some of the most common 500-Series Server Error messages:
500 Internal Server Error
This is a dreaded and very, very general server error. It means something went wrong – and it’s time to check server logs to find out exactly what!
501 Not Implemented
The server doesn’t understand or have a way to respond to the requested method (like GET or POST) that the request had tried to use – but this error generally means that the server intends to be able to serve this type of request in the future.
502 Bad Gateway
This server is a gateway or a proxy and received a bad response from wherever it was expecting information to come from. The problem, friend, lies in the upstream resource – see if you can have them provide a proper response!
Usually, this is a temporary error indicating the server is unavailable because it is overloaded with too many requests or simply down for maintenance. It’s time to look into your web server settings and try to allow more concurrent requests, or see if you can get the server up if it’s just down completely!
504 Gateway Time-out
This server is a gateway or a proxy and didn’t receive a timely response from wherever it was expecting information to come from. Check into your upstream proxies or gateways and see if there are any outages!
505 HTTP Version Not Supported
The request is using an HTTP version that the server cannot handle. Either your server is too new – in which case, ask your visitors to upgrade browsers, or too old, in which case it’s time to upgrade the web server!
I hope that the Ultimate HTTP Error Code List has helped illuminate (and make enjoyable) the jungle of HTTP Status and Error Codes.