HTTP status codes
This section describes some of the common HTTP status codes.
Note
This article doesn’t list every possible HTTP status code as dictated in the HTTP specification. For example, a custom Internet Server API (ISAPI) filter or a custom HTTP module can set its own HTTP status code.
1xx – Informational
These HTTP status codes indicate an interim response for communicating request progress or status before sending a final response to the client computer.
IIS 7.0 and later versions use the following informational HTTP status codes:
Code | Description | Notes |
---|---|---|
100 | Continue | Initial part of the request has been received and has not yet been rejected by the server. The server intends to send a final response after the request has been fully received and acted upon. |
101 | Switching protocols | Server understands and is willing to comply with client’s request for a change in the application protocol being used. |
2xx – Successful
These HTTP status codes indicate that the server successfully received and accepted the client’s request.
IIS 7.0 and later versions use the following success HTTP status codes:
Code | Description | Notes |
---|---|---|
200 | OK | The client request was successfully processed. |
201 | Created | The client request has been fulfilled and has resulted in one or more new resources being created. |
202 | Accepted | The client request has been accepted for processing, but the processing has not been completed. |
203 | Nonauthoritative information | The client request was successful but the enclosed content has been modified from that of the origin server’s response. |
204 | No content | The server has successfully fulfilled the request and that there is no additional content to send in the response content. |
205 | Reset content | The server has fulfilled the request and desires that the user agent reset the “document view”, which caused the request to be sent, to its original state as received from the origin server. |
206 | Partial content | The server is successfully fulfilling a range request for the target resource by transferring one or more parts of the selected representation. |
3xx – Redirection
These HTTP status codes indicate that the client browser must take more action to fulfill the request. For example, the client browser may have to request a different page on the server. Or, the client browser may have to repeat the request by using a proxy server.
IIS 7.0 and later versions use the following redirection HTTP status codes:
Code | Description | Notes |
---|---|---|
301 | Moved permanently | The target resource has been assigned a new permanent URI and any future references to this resource ought to use one of the enclosed URIs. |
302 | Object moved | The target resource resides temporarily under a different URI. Since the redirection might be altered on occasion, the client ought to continue to use the target URI for future requests |
304 | Not modified | A conditional GET or HEAD request has been received and would have resulted in a 200 (OK) response if it were not for the fact that the condition evaluated to false. |
307 | Temporary redirect | The client browser requests a document that is already in the cache. And the document hasn’t been modified since it was cached. The client browser uses the cached copy of the document instead of downloading the document from the server. |
4xx – Client error
These HTTP status codes indicate that an error has occurred and the client browser appears to be at fault. For example, the client browser may have requested a page that doesn’t exist. Or, the client browser may not have provided valid authentication information.
IIS 7.0 and later versions use the following client error HTTP status codes:
Code | Description | Notes |
---|---|---|
400 | Bad request | The request could not be understood by the server due to malformed syntax. The client should not repeat the request without modifications. For more information, see Troubleshooting HTTP 400 Errors in IIS. |
401 | Access denied | The request has not been applied because it lacks valid authentication credentials for the target resource. |
403 | Forbidden | The server understood the request but refuses to fulfill it. |
404 | Not found | The origin server didn’t find a current representation for the target resource or isn’t willing to disclose that one exists. |
405 | Method not allowed. | The method received in the request-line is known by the origin server but not supported by the target resource. |
406 | Client browser doesn’t accept the MIME type of the requested page. | |
408 | Request timed out | The server didn’t receive a complete request message within the time that it was prepared to wait. |
412 | Precondition failed. | One or more conditions given in the request header fields evaluated to false when tested on the server. |
400 – Bad request
The Hypertext Transfer Protocol Stack (Http.sys) file blocks IIS 7.0 and later versions from processing the request because of a problem in the request. Typically, this HTTP status code means that the request contains invalid characters or sequences, or that the request goes against the security settings in the Http.sys file.
IIS 7.0 and later versions define the following HTTP status codes that indicate a more specific cause of an error 400:
Code | Description |
---|---|
400.1 | Invalid Destination Header |
400.2 | Invalid Depth Header |
400.3 | Invalid If Header |
400.4 | Invalid Overwrite Header |
400.5 | Invalid Translate Header |
400.6 | Invalid Request Body |
400.7 | Invalid Content Length |
400.8 | Invalid Timeout |
400.9 | Invalid Lock Token |
The following HTTP sub-status codes are introduced in IIS 8.0:
Code | Description |
---|---|
400.10 | Invalid X-Forwarded-For (XFF) header |
400.11 | Invalid WebSocket request |
The following HTTP sub-status codes are introduced in ARR 3.0.1916:
Code | Description |
---|---|
400.601 | Bad client request (ARR) |
400.602 | Invalid time format (ARR) |
400.603 | Parse range error (ARR) |
400.604 | Client gone (ARR) |
400.605 | Maximum number of forwards (ARR) |
400.606 | Asynchronous competition error (ARR) |
401 – Access denied
IIS 7.0 and later versions define several HTTP status codes that indicate a more specific cause of an error 401. The following specific HTTP status codes are displayed in the client browser but aren’t displayed in the IIS log:
Code | Description | Notes |
---|---|---|
401.1 | Logon failed | The logon attempt is unsuccessful probably because of a user name or a password that is invalid. |
401.2 | Logon failed due to server configuration | This HTTP status code indicates a problem in the authentication configuration settings on the server. |
401.3 | Unauthorized due to ACL on resource | This HTTP status code indicates a problem in the NTFS file system permissions. This problem may occur even if the permissions are correct for the file that you try to access. For example, this problem occurs if the IUSR account doesn’t have access to the C:\Winnt\System32\Inetsrv directory. |
401.4 | Authorization failed by filter | An Internet Server Application Programming Interface (ISAPI) filter doesn’t let the request be processed because of an authorization problem. |
401.5 | Authorization failed by ISAPI/CGI application | An ISAPI application or a Common Gateway Interface (CGI) application doesn’t let the request be processed because of an authorization problem. |
401.501 | Access Denied: Too many requests from the same client IP; Dynamic IP Restriction Concurrent request rate limit reached. | |
401.502 | Forbidden: Too many requests from the same client IP; Dynamic IP Restriction Maximum request rate limit reached. | |
401.503 | Access Denied: the IP address is included in the Deny list of IP Restriction | |
401.504 | Access Denied: the host name is included in the Deny list of IP Restriction |
403 – Forbidden
IIS 7.0 and later versions define the following HTTP status codes that indicate a more specific cause of an error 403:
Code | Description | Notes |
---|---|---|
403.1 | Execute access forbidden | The appropriate level of the Execute permission isn’t granted. |
403.2 | Read access forbidden | The appropriate level of the Read permission isn’t granted. Verify that you have set up IIS 7.0 and later versions to grant the Read permission to the directory. Additionally, if you use a default document, verify that the default document exists. |
403.3 | Write access forbidden | The appropriate level of the Write permission isn’t granted. Check the IIS 7.0 and later versions permissions and the NTFS file system permissions. Make sure that they are set up to grant the Write permission to the directory. |
403.4 | SSL required | The request is made over a non-secure channel. But the web application requires a Secure Sockets Layer (SSL) connection. |
403.5 | SSL 128 required | The server is configured to require a 128-bit SSL connection. But, the request isn’t sent by using 128-bit encryption. |
403.6 | IP address rejected | The server is configured to deny access to the current IP address. |
403.7 | Client certificate required | The server is configured to require a certificate for client authentication. But the client browser doesn’t have an appropriate client certificate installed. For more information, see HTTP error 403.7. |
403.8 | Site access denied | The server is configured to deny requests based on the Domain Name System (DNS) name of the client computer. For more information, see Dynamic IP Address restrictions. |
403.9 | Forbidden: too many clients are trying to connect to the web server | |
403.10 | Forbidden: web server is configured to deny Execute access | |
403.11 | Forbidden: Password has been changed | |
403.12 | Mapper denied access | The page that you want to access requires a client certificate. But, the user ID that is mapped to the client certificate is denied access to the file. |
403.13 | Client certificate revoked | The client browser tries to use a client certificate that was revoked by the issuing certification authority. |
403.14 | Directory listing denied | The server isn’t configured to display a content directory listing, and a default document isn’t set. For more information, see HTTP Error 403.14. |
403.15 | Forbidden: Client access licenses have exceeded limits on the web server | |
403.16 | Client certificate is untrusted or invalid. | The client browser tries to use an invalid client certificate. Or the server that is running IIS 7.0 and later versions doesn’t trust the client certificate. For more information, see HTTP Error 403.16. |
403.17 | Client certificate has expired or is not yet valid. | The client browser tries to use a client certificate that is expired or that isn’t yet valid. |
403.18 | Cannot execute requested URL in the current application pool. | A custom error page is configured. And the application pool of the customer error page is different with the application pool of the requested URL. |
403.19 | Cannot execute CGI applications for the client browser in this application pool. | The identity of the application pool doesn’t have the Replace a process level token user right. |
403.20 | Forbidden: Passport logon failed | |
403.21 | Forbidden: Source access denied | |
403.22 | Forbidden: Infinite depth is denied | |
403.501 | Forbidden: Too many requests from the same client IP; Dynamic IP Restriction Concurrent request rate limit reached | |
403.502 | Forbidden: Too many requests from the same client IP; Dynamic IP Restriction Maximum request rate limit reached | |
403.503 | Forbidden: the IP address is included in the Deny list of IP Restriction | |
403.504 | Forbidden: the host name is included in the Deny list of IP Restriction |
404 – Not found
IIS 7.0 and later versions define the following HTTP status codes that indicate a more specific cause of an error 404:
Code | Description | Notes |
---|---|---|
404.0 | Not found | The file that you try to access is moved or doesn’t exist. |
404.1 | Site Not Found | |
404.2 | ISAPI or CGI restriction. | The requested ISAPI resource or the requested CGI resource is restricted on the computer. For more information, see HTTP Error 404.2. |
404.3 | MIME type restriction. | The current MIME mapping for the requested extension type is invalid or isn’t configured. |
404.4 | No handler configured. | The file name extension of the requested URL doesn’t have a handler that is configured to process the request on the Web server. |
404.5 | Denied by request filtering configuration. | The requested URL contains a character sequence that is blocked by the server. |
404.6 | Verb denied. | The request is made by using an HTTP verb that isn’t configured or that isn’t valid. |
404.7 | File extension denied. | The requested file name extension isn’t allowed. |
404.8 | Hidden namespace. | The requested URL is denied because the directory is hidden. |
404.9 | Files attribute hidden. | The requested file is hidden. |
404.10 | Request header too long. | The request is denied because the request headers are too long. |
404.11 | Request contains double escape sequence. | The request contains a double escape sequence. |
404.12 | Request contains high-bit characters. | The request contains high-bit characters, and the server is configured not to allow high-bit characters. |
404.13 | Content length too large. | The request contains a Content-Length header. The value of the Content-Length header is larger than the limit that is allowed for the server. For more information, see HTTP Error 404.13 – CONTENT_LENGTH_TOO_LARGE. |
404.14 | Request URL too long. | The requested URL exceeds the limit that is allowed for the server. |
404.15 | Query string too long. | The request contains a query string that is longer than the limit that is allowed for the server. |
404.16 | DAV request sent to the static file handler | |
404.17 | Dynamic content mapped to the static file handler. | For more information, see HTTP Error 404.17 – Not Found. |
404.18 | Querystring sequence denied | |
404.19 | Denied by filtering rule | |
404.20 | Too Many URL Segments | |
404.501 | Not Found: Too many requests from the same client IP; Dynamic IP Restriction Concurrent request rate limit reached | |
404.502 | Not Found: Too many requests from the same client IP; Dynamic IP Restriction Maximum request rate limit reached | |
404.503 | Not Found: the IP address is included in the Deny list of IP Restriction | |
404.504 | Not Found: the host name is included in the Deny list of IP Restriction |
405, 406, 412
Code | Description | Notes |
---|---|---|
405.0 | Method not allowed. | The request is made by using an HTTP method that isn’t valid. For more information, see HTTP Error 405.0. |
406.0 | Invalid MIME type. | The request is made by using an Accept header that contains a MIME value that isn’t valid. |
412.0 | Precondition failed. | The request is made by using an If-Match request header that contains a value that isn’t valid. |
5xx – Server error
The 5xx HTTP status codes indicate that the server can’t complete the request because the server encounters an error.
IIS and later versions use the following server error HTTP status codes:
Code | Description | Notes |
---|---|---|
500 | Internal server error | The server encountered an unexpected condition that prevented it from fulfilling the request. |
501 | Header values specify a configuration that is not implemented | The server does not support the functionality required to fulfill the request. |
502 | Web server received an invalid response while acting as a gateway or proxy | The server, while acting as a gateway or proxy, received an invalid response from an inbound server it accessed while attempting to fulfill the request. For more information, see Troubleshooting 502 Errors in ARR. |
503 | Service unavailable | The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. |
500 – Internal server error
IIS 7.0 and later versions define the following HTTP status codes that indicate a more specific cause of an error 500:
Code | Description | Notes |
---|---|---|
500.0 | Module or ISAPI error occurred. | This HTTP status code may occur for many server-side reasons. For more information, see HTTP Error 500.0 – Internal Server Error. |
500.11 | Application is shutting down on the web server. | The request isn’t processed because the destination application pool is shutting down. Wait for the worker process to finish shutting down, and then try the request again. If this problem persists, the web application may be experiencing problems that prevent the web application from shutting down correctly. |
500.12 | Application is busy restarting on the web server. | The request isn’t processed because the destination application pool is restarting. This HTTP status code should disappear when you refresh the page. If this HTTP status code appears again after you refresh the page, the problem may be caused by antivirus software that is scanning the Global.asa file. If this problem persists, the web application may be experiencing problems that prevent the web application from restarting correctly. |
500.13 | Web server is too busy. | The request isn’t processed because the server is too busy to accept any new incoming requests. Typically, this HTTP status code means that the number of incoming concurrent requests exceeds the number that the IIS 7.0 and later versions web application can process. This problem may occur when the performance configuration settings are set too low, the hardware is insufficient, or a bottleneck occurs in the IIS 7.0 and later versions web application. A common troubleshooting method is to generate a memory dump file of the IIS 7.0 and later versions processes when the error is occurring and then to debug the memory dump file. |
500.15 | Direct requests for Global.asax aren’t allowed. | A direct request for the Global.asa file or for the Global.asax file is made. |
500.19 | Configuration data is invalid. | This HTTP status code occurs because of a problem in the associated applicationhost.config file or in the associated Web.config file. For more information, see HTTP Error 500.19. |
500.21 | Module not recognized. | |
500.22 | An ASP.NET httpModules configuration does not apply in Managed Pipeline mode. |
|
500.23 | An ASP.NET httpHandlers configuration does not apply in Managed Pipeline mode. |
|
500.24 | An ASP.NET impersonation configuration does not apply in Managed Pipeline mode. | |
500.50 | A rewrite error occurred during RQ_BEGIN_REQUEST notification handling. A configuration or inbound rule execution error occurred. |
Note: Here is where the distributed rules configuration is read for both inbound and outbound rules. |
500.51 | A rewrite error occurred during GL_PRE_BEGIN_REQUEST notification handling. A global configuration or global rule execution error occurred. | Note: Here is where the global rules configuration is read. |
500.52 | A rewrite error occurred during RQ_SEND_RESPONSE notification handling. An outbound rule execution occurred. |
|
500.53 | A rewrite error occurred during RQ_RELEASE_REQUEST_STATE notification handling. An outbound rule execution error occurred. The rule is configured to be executed before the output user cache gets updated. |
|
500.100 | Internal ASP error. | An error occurs during the processing of an Active Server Pages (ASP) page. To obtain more specific information about the error, disable friendly HTTP error messages in the web browser. Additionally, the IIS log may show an ASP error number that corresponds to the error that occurs. |
502 – Bad gateway
IIS 7.0 and later versions define the following HTTP status codes that indicate a more specific cause of an error 502:
Code | Description |
---|---|
502.1 | CGI application timeout. |
502.2 | Bad gateway: Premature Exit. |
502.3 | Bad Gateway: Forwarder Connection Error (ARR). |
502.4 | Bad Gateway: No Server (ARR). |
The following HTTP status codes are added in ARR 3.0.1916:
Code | Description |
---|---|
502.2 | Map request failure (ARR) |
502.3 | WinHTTP asynchronous completion failure (ARR) |
502.4 | No server (ARR) |
502.5 | WebSocket failure (ARR) |
502.6 | Forwarded request failure (ARR) |
502.7 | Execute request failure (ARR) |
503 – Service unavailable
IIS 7.0 and later versions define the following HTTP status codes that indicate a more specific cause of an error 503:
Code | Description | Notes |
---|---|---|
503.0 | Application pool unavailable. | The request is sent to an application pool that is currently stopped or disabled. To resolve this issue, make sure that the destination application pool is started. The event log may give information about why the application pool is stopped or disabled. |
503.2 | Concurrent request limit exceeded. | The appConcurrentRequestLimit property is set to a value that is lower than the current number of concurrent requests. IIS 7.0 and later versions don’t allow more concurrent requests than the value of the appConcurrentRequestLimit property. |
503.3 | ASP.NET queue full | |
503.4 | FastCGI queue full |
Source:
https://github.com/MicrosoftDocs/SupportArticles-docs/blob/main/support/developer/webapps/iis/www-administration-management/http-status-code.md