recursal/MDN huggingface dataset:
501 Not Implemented
===================

The HyperText Transfer Protocol (HTTP) **`501 Not Implemented`** server error response code means that **the server does not support the functionality required to fulfill the request**.

This status can also send a `Retry-After` header, telling the requester when to check back to see if the functionality is supported by then.

`501` is the appropriate response when the server does not recognize the request method and is incapable of supporting it for any resource. The only methods that servers are required to support (and therefore that must not return `501`) are `GET` and `HEAD`.

If the server *does* recognize the method, but intentionally does not support it, the appropriate response is `405 Method Not Allowed`.

**Note:**

* A 501 error is not something you can fix, but requires a fix by the web server you are trying to access.
* A 501 response is cacheable by default; that is, unless caching headers instruct otherwise.

Status
------


```http
501 Not Implemented
```

Specifications
--------------

| Specification |
| --- |
| HTTP Semantics # status.501 |

Browser compatibility
---------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
304 Not Modified
================

 The HTTP **`304 Not Modified`** client redirection response code indicates that there is no need to retransmit the requested resources.
 This response code is sent when the request is a conditional `GET` or `HEAD` request with an `If-None-Match` or an `If-Modified-Since` header and the condition evaluates to false.
 It is an implicit redirection to a cached resource that would have resulted in a `200` `OK` response if the condition evaluated to true.

 The response must not contain a body and must include the headers that would
 have been sent in an equivalent `200` `OK` response:
 `Cache-Control`, `Content-Location`,
 `Date`, `ETag`, `Expires`, and
 `Vary`.


**Note:** Many developer tools' network panels
 of browsers create extraneous requests leading to `304` responses, so that
 access to the local cache is visible to developers.


Status
------


```http
304 Not Modified
```

Examples
--------

 The examples below show `GET` requests made using curl with conditional request headers and the HTTP responses received in return.
 The first example would return a `200` `OK` if we know the resource has been updated since the timestamp in the `If-Modified-Since` header.
 For illustration, the request uses a future date of 21st November 2050 to check whether if the resource has been updated since this date:


```bash
curl -v --header 'If-Modified-Since: Tue, 21 Nov 2050 08:00:00 GMT' \
 https://developer.mozilla.org/en-US/
```



```http
> Request
GET /en-US/ HTTP/2
Host: developer.mozilla.org
User-Agent: curl/8.1.2
Accept: \*/\*
If-Modified-Since: Tue, 21 Nov 2050 08:00:00 GMT

< Response
HTTP/2 304
date: Tue, 21 Nov 2023 08:44:28 GMT
expires: Tue, 21 Nov 2023 08:53:14 GMT
age: 3194
etag: "e27d81b845c3716cdb5d4220d78e2799"
```


 A `304 Not Modified` response is also returned in response to a `GET` request containing an `If-None-Match` header with the ETag from the response above.
 Because the `etag` exists, a matching entity tag fails the condition, and a `304` response is returned:


```bash
curl -v --header 'If-None-Match: "e27d81b845c3716cdb5d4220d78e2799"' \
 https://developer.mozilla.org/en-US/
```



```http
> Request
GET /en-US/ HTTP/2
Host: developer.mozilla.org
User-Agent: curl/8.1.2
Accept: \*/\*
If-None-Match: "e27d81b845c3716cdb5d4220d78e2799"

< Response
HTTP/2 304
date: Tue, 21 Nov 2023 08:47:37 GMT
expires: Tue, 21 Nov 2023 09:38:23 GMT
age: 2920
etag: "e27d81b845c3716cdb5d4220d78e2799"
```

Specifications
--------------

| Specification |
| --- |
| HTTP Semantics # status.304 |

Browser compatibility
---------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

### Compatibility notes

* Browser behavior differs if this response erroneously includes a body on persistent
 connections. See 204 No Content for more
 detail.
See also
--------

* `If-Modified-Since`
* `If-None-Match`
* HTTP conditional requests
* 204 No Content
403 Forbidden
=============

The HTTP **`403 Forbidden`** response status code indicates that the server understands the request but refuses to authorize it.

This status is similar to `401`, but for the **`403 Forbidden`** status code, re-authenticating makes no difference. The access is tied to the application logic, such as insufficient rights to a resource.

Status
------


```http
403 Forbidden
```

Example response
----------------


```http
HTTP/1.1 403 Forbidden
Date: Wed, 21 Oct 2015 07:28:00 GMT
```

Specifications
--------------

| Specification |
| --- |
| HTTP Semantics # status.403 |

Browser compatibility
---------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

See also
--------

* `401`
* HTTP Status Code Definitions
505 HTTP Version Not Supported
==============================

 The HyperText Transfer Protocol (HTTP)
 **`505 HTTP Version Not Supported`** response status code
 indicates that the HTTP version used in the request is not supported by the server.

Status
------


```http
505 HTTP Version Not Supported
```

Specifications
--------------

| Specification |
| --- |
| HTTP Semantics # status.505 |

See also
--------

* `Upgrade`
202 Accepted
============

 The HyperText Transfer Protocol (HTTP) **`202 Accepted`**
 response status code indicates that the request has been accepted for processing, but
 the processing has not been completed; in fact, processing may not have started yet. The
 request might or might not eventually be acted upon, as it might be disallowed when
 processing actually takes place.

 202 is non-committal, meaning that there is no way for the HTTP to later send an
 asynchronous response indicating the outcome of processing the request. It is intended
 for cases where another process or server handles the request, or for batch processing.

Status
------


```http
202 Accepted
```

Specifications
--------------

| Specification |
| --- |
| HTTP Semantics # status.202 |

See also
--------

* `Accept`
406 Not Acceptable
==================

 The HyperText Transfer Protocol (HTTP) **`406 Not Acceptable`**
 client error response code indicates that the server cannot produce a response matching
 the list of acceptable values defined in the request's proactive content negotiation headers, and
 that the server is unwilling to supply a default representation.

Proactive content negotiation headers include:

* `Accept`
* `Accept-Encoding`
* `Accept-Language`

 In practice, this error is very rarely used. Instead of responding using this error
 code, which would be cryptic for the end user and difficult to fix, servers ignore the
 relevant header and serve an actual page to the user. It is assumed that even if the
 user won't be completely happy, they will prefer this to an error code.

 If a server returns such an error status, the body of the message should contain the
 list of the available representations of the resources, allowing the user to choose
 among them.

Status
------


```http
406 Not Acceptable
```

Specifications
--------------

| Specification |
| --- |
| HTTP Semantics # status.406 |

Browser compatibility
---------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

See also
--------

* `Accept`
* `Accept-Encoding`
* `Accept-Language`
* HTTP content negotiation
301 Moved Permanently
=====================

The HyperText Transfer Protocol (HTTP) **`301 Moved Permanently`** redirect status response code indicates that the requested resource has been definitively moved to the URL given by the `Location` headers. A browser redirects to the new URL and search engines update their links to the resource.

**Note:** Although the specification requires the method and the body to remain unchanged when the redirection is performed, not all user-agents meet this requirement. Use the `301` code only as a response for `GET` or `HEAD` methods and use the `308 Permanent Redirect` for `POST` methods instead, as the method change is explicitly prohibited with this status.

Status
------


```http
301 Moved Permanently
```

Example
-------

### Client request


```http
GET /index.php HTTP/1.1
Host: www.example.org
```

### Server response


```http
HTTP/1.1 301 Moved Permanently
Location: http://www.example.org/index.asp
```

Specifications
--------------

| Specification |
| --- |
| HTTP Semantics # status.301 |

Browser compatibility
---------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

See also
--------

* `308 Permanent Redirect`, the equivalent of this status code
 where the method used never changes.
* `302 Found`, a temporary redirect
207 Multi-Status
================

**Note:** The ability to return a *collection of resources* is part of the WebDAV protocol (it may be received by web applications accessing a WebDAV server).
 Browsers accessing web pages will never encounter this status code.


The HTTP **`207 Multi-Status`** response code indicates that there might be a mixture of responses.

The response body is a `text/xml` or `application/xml` HTTP entity with a `multistatus` root element. The XML body will list all individual response codes.

Status
------
```

207 Multi-Status
```

Example
-------


```http
HTTP/1.1 207 Multi-Status
Content-Type: application/xml; charset="utf-8"
Content-Length: 1241

<?xml version="1.0" encoding="utf-8" ?>
<D:multistatus xmlns:D="DAV:">
  <D:response>
    <D:href>http://www.example.com/Coll/</D:href>
    <D:propstat>
      <D:prop>
        <D:displayname>Loop Demo</D:displayname>
        <D:resource-id>
          <D:href>urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf8</D:href>
        </D:resource-id>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
  </D:response>
  <D:response>
    <D:href>http://www.example.com/Coll/Bar</D:href>
    <D:propstat>
      <D:prop>
        <D:displayname>Loop Demo</D:displayname>
        <D:resource-id>
          <D:href>urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf8</D:href>
        </D:resource-id>
      </D:prop>
      <D:status>HTTP/1.1 208 Already Reported</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>
```

Specifications
--------------

| Specification |
| --- |
| RFC 4918 # section-11.1 |

See also
--------

* HTTP request methods
* `204`
* `403`
500 Internal Server Error
=========================

The HyperText Transfer Protocol (HTTP) **`500 Internal Server Error`** server error response code indicates that the server encountered an unexpected condition that prevented it from fulfilling the request.

This error response is a generic "catch-all" response. Usually, this indicates the server cannot find a better 5xx error code to response. Sometimes, server administrators log error responses like the 500 status code with more details about the request to prevent the error from happening again in the future.

Status
------


```http
500 Internal Server Error
```

Specifications
--------------

| Specification |
| --- |
| HTTP Semantics # status.500 |

Browser compatibility
---------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

See also
--------

* HTTP Status Code Definitions
402 Payment Required
====================

**Experimental:** **This is an experimental technology**  
Check the Browser compatibility table carefully before using this in production.

The HTTP **`402 Payment Required`** is a nonstandard response status code that is reserved for future use. This status code was created to enable digital cash or (micro) payment systems and would indicate that the requested content is not available until the client makes a payment.

Sometimes, this status code indicates that the request cannot be processed until the client makes a payment. However, no standard use convention exists and different entities use it in different contexts.

Status
------


```http
402 Payment Required
```

Example response
----------------


```http
HTTP/1.1 402 Payment Required
Date: Wed, 21 Oct 2015 07:28:00 GMT
```

Specifications
--------------

| Specification |
| --- |
| HTTP Semantics # status.402 |

Browser compatibility
---------------------

This status code is *reserved* but not defined. No browser actually supports it and the error will be displayed as a generic `4xx` status code.

See also
--------

* HTTP authentication
504 Gateway Timeout
===================

The HyperText Transfer Protocol (HTTP) **`504 Gateway Timeout`** server error response code indicates that the server, while acting as a gateway or proxy, did not get a response in time from the upstream server that it needed in order to complete the request.

**Note:** A Gateway might refer to different things in networking and a 504 error is usually not something you can fix, but requires a fix by the web server or the proxies you are trying to get access through.

Status
------


```http
504 Gateway Timeout
```

Specifications
--------------

| Specification |
| --- |
| HTTP Semantics # status.504 |

Browser compatibility
---------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

See also
--------

* HTTP Status Code Definitions
* `502`
451 Unavailable For Legal Reasons
=================================

The HyperText Transfer Protocol (HTTP) **`451 Unavailable For Legal Reasons`** client error response code indicates that the user requested a resource that is not available due to legal reasons, such as a web page for which a legal action has been issued.

Status
------


```http
451 Unavailable For Legal Reasons
```

Example
-------

This example response is taken from the IETF RFC (see below) and contains a reference to Monty Python's Life of Brian.

**Note:** the `Link` header might also contain a `rel="blocked-by"` relation identifying the entity implementing the blockage, not any other entity mandating it.

Any attempt to identify the entity ultimately responsible for the resource being unavailable belongs in the response body, not in the `rel="blocked-by"` link. This includes the name of the person or organization that made a legal demand resulting in the content's removal.


```http
HTTP/1.1 451 Unavailable For Legal Reasons
Link: <https://spqr.example.org/legislatione>; rel="blocked-by"
Content-Type: text/html

<html>
 <head><title>Unavailable For Legal Reasons</title></head>
 <body>
 <h1>Unavailable For Legal Reasons</h1>
 <p>This request may not be serviced in the Roman Province
 of Judea due to the Lex Julia Majestatis, which disallows
 access to resources hosted on servers deemed to be
 operated by the People's Front of Judea.</p>
 </body>
</html>
```

Specifications
--------------

| Specification |
| --- |
| An HTTP Status Code to Report Legal Obstacles # n-451-unavailable-for-legal-reasons |

Browser compatibility
---------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

See also
--------

* Wikipedia: HTTP 451
* Wikipedia: Fahrenheit 451 (which gave this status code its number)
203 Non-Authoritative Information
=================================

 The HTTP **`203 Non-Authoritative Information`** response
 status indicates that the request was successful but the enclosed payload has been
 modified by a transforming proxy from that of the origin
 server's `200` (`OK`) response.

 The `203` response is similar to the value
 `214`,
 meaning `Transformation Applied`, of the `Warning` header
 code, which has the additional advantage of being applicable to responses with any
 status code.

Status
------


```http
203 Non-Authoritative Information
```

Specifications
--------------

| Specification |
| --- |
| HTTP Semantics # status.203 |

See also
--------

* `200`
* Proxy server
* `Warning`
101 Switching Protocols
=======================

 The HTTP **`101 Switching Protocols`** response code indicates
 a protocol to which the server switches.
 The protocol is specified in the `Upgrade` request header received from a client.

 The server includes in this response an `Upgrade` response header to
 indicate the protocol it switched to. The process is described in the following article:
 Protocol upgrade mechanism.

Status
------


```http
101 Switching Protocols
```

Examples
--------

Switching protocols might be used with WebSockets.


```http
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
```

Specifications
--------------

| Specification |
| --- |
| HTTP Semantics # status.101 |

See also
--------

* Protocol upgrade mechanism
* WebSockets
* `Upgrade`
* `426` `Upgrade Required`
416 Range Not Satisfiable
=========================

The HyperText Transfer Protocol (HTTP) **`416 Range Not Satisfiable`** error response code indicates that a server cannot serve the requested ranges. The most likely reason is that the document doesn't contain such ranges, or that the `Range` header value, though syntactically correct, doesn't make sense.

The `416` response message contains a `Content-Range` indicating an unsatisfied range (that is a `'*'`) followed by a `'/'` and the current length of the resource. E.g. `Content-Range: bytes */12777`

Faced with this error, browsers usually either abort the operation (for example, a download will be considered as non-resumable) or ask for the whole document again.

Status
------


```http
416 Range Not Satisfiable
```

Specifications
--------------

| Specification |
| --- |
| HTTP Semantics # status.416 |

Browser compatibility
---------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

See also
--------

* `206` `Partial Content`
* `Content-Range`
* `Range`
508 Loop Detected
=================

 The HyperText Transfer Protocol (HTTP) **`508 Loop Detected`**
 response status code may be given in the context of the Web Distributed Authoring and
 Versioning (WebDAV) protocol.

 It indicates that the server terminated an operation because it encountered an infinite
 loop while processing a request with "Depth: infinity". This status indicates that the
 entire operation failed.

Status
------


```http
508 Loop Detected
```

Specifications
--------------

| Specification |
| --- |
| RFC 5842 # section-7.2 |
510 Not Extended
================

 The HyperText Transfer Protocol (HTTP) **`510 Not Extended`**
 response status code is sent in the context of the HTTP Extension Framework, defined in
 RFC 2774.

 In that specification a client may send a request that contains an extension
 declaration, that describes the extension to be used. If the server receives such a
 request, but any described extensions are not supported for the request, then the server
 responds with the 510 status code.

Status
------


```http
510 Not Extended
```

Specifications
--------------

| Specification |
| --- |
| RFC 2774 # section-7 |
226 IM Used
===========

**Note:** Browsers don't support *delta encoding* with HTTP. This status code is sent back by custom servers used by specific clients.

In the context of delta encodings, the HTTP **`226 IM Used`** status code is set by the server to indicate that it is returning a *delta* to the `GET` request that it received.

With delta encoding a server responds to `GET` requests with differences (called *deltas*) relative to a given base document (rather than the current document). The client uses the `A-IM:` HTTP header to indicate which differencing algorithm to use and the `If-None-Match:` header to hint the server about the last version it got. The server generates a delta, sending it back in an HTTP response with the `226` status code and containing the `IM:` (with the name of the algorithm used) and `Delta-Base:` (with the `ETag` matching the base document associated to the delta) HTTP headers.

IM stands for *instance manipulations* the term used to describe an algorithm generating a *delta*.

Status
------
```

226 IM Used
```

Specifications
--------------

| Specification |
| --- |
| Unknown specification # section-10.4.1 |
423 Locked
==========

**Note:** The ability to *lock* a resource is specific to some WebDAV servers. Browsers accessing web pages will never encounter this status code; in the erroneous cases it happens, they will handle it as a generic `400` status code.

The HTTP **`423 Locked`** error response code indicates that either the resources tentatively targeted by is *locked*, meaning it can't be accessed. Its content should contain some information in WebDAV's XML format.

Status
------


```http
423 Locked
```

### Example


```http
HTTP/1.1 423 Locked
Content-Type: application/xml; charset="utf-8"
Content-Length: xxxx

<?xml version="1.0" encoding="utf-8" ?>
<D:error xmlns:D="DAV:">
  <D:lock-token-submitted>
    <D:href>/workspace/webdav/</D:href>
  </D:lock-token-submitted>
</D:error>
```

Specifications
--------------

| Specification |
| --- |
| RFC 4918 # section-11.3 |
412 Precondition Failed
=======================

 The HyperText Transfer Protocol (HTTP)
 **`412 Precondition Failed`** client error response code
 indicates that access to the target resource has been denied. This happens with
 conditional requests on methods other than `GET` or
 `HEAD` when the condition defined by the
 `If-Unmodified-Since` or `If-None-Match` headers is not
 fulfilled. In that case, the request, usually an upload or a modification of a resource,
 cannot be made and this error response is sent back.

Status
------


```http
412 Precondition Failed
```

Examples
--------


```http
ETag: "33a64df551425fcc55e4d42a148795d9f25f89d4"
ETag: W/"0815"
```

### Avoiding mid-air collisions

 With the help of the `ETag` and the `If-Match` headers, you
 can detect mid-air edit collisions.

 For example, when editing MDN, the current wiki content is hashed and put into an
 `Etag` in the response:


```http
ETag: "33a64df551425fcc55e4d42a148795d9f25f89d4"
```


 When saving changes to a wiki page (posting data), the `POST` request
 will contain the `If-Match` header containing the `ETag`
 values to check freshness against.


```http
If-Match: "33a64df551425fcc55e4d42a148795d9f25f89d4"
```


 If the hashes don't match, it means that the document has been edited in-between and a
 `412` `Precondition Failed` error is thrown.

Specifications
--------------

| Specification |
| --- |
| HTTP Semantics # status.412 |

Browser compatibility
---------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

The information below has been pulled from MDN's GitHub (https://github.com/mdn/browser-compat-data).

See also
--------

* `304`
* `If-Unmodified-Since`
* `If-None-Match`
* `428`
404 Not Found
=============

 The HTTP **`404 Not Found`** response status code indicates that the server cannot find the requested resource.
 Links that lead to a 404 page are often called broken or dead links and can be subject to link rot.

 A 404 status code only indicates that the resource is missing: not whether the absence is temporary or permanent.
 If a resource is permanently removed, use the `410` (Gone) status instead.

Status
------


```http
404 Not Found
```

Custom error pages
------------------

You can display a custom 404 page to be more helpful to a user and provide guidance on what to do next. For example, for the Apache server, you can specify a path to a custom 404 page in an `.htaccess` file:


```apacheconf
ErrorDocument 404 /notfound.html
```


For an example of a custom 404 page, see this 404 page.

**Note:** Custom design is a good thing, in moderation. Feel free to make your 404 page humorous and human, but don't confuse your users.

Specifications
--------------

| Specification |
| --- |
| HTTP Semantics # status.404 |

Browser compatibility
---------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

See also
--------

* `410`
* Wikipedia: HTTP 404