recursal/MDN huggingface dataset:
416 Range Not Satisfiable
=========================

HTTP **`416 Range Not Satisfiable`** 错误状态码意味着服务器无法处理所请求的数据区间。最常见的情况是所请求的数据区间不在文件范围之内，也就是说，`Range` 首部的值，虽然从语法上来说是没问题的，但是从语义上来说却没有意义。

`416` 响应报文包含一个 `Content-Range` 首部，提示无法满足的数据区间（用星号 \* 表示），后面紧跟着一个“/”，再后面是当前资源的长度。例如：Content-Range: \*/12777

遇到这一错误状态码时，浏览器一般有两种策略：要么终止操作（例如，一项中断的下载操作被认为是不可恢复的），要么再次请求整个文件。

状态
--
```

416 Range Not Satisfiable
```

规范
--

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

浏览器兼容性
------

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

更多内容
----

* `206` `Partial Content`
* `Content-Range`
* `Range`
101 Switching Protocol
======================

HTTP **`101 Switching Protocol`**（协议切换）状态码表示服务器应客户端升级协议的请求（`Upgrade` (en-US)请求头）正在切换协议。

 服务器会发送一个`Upgrade` (en-US)响应头来表明其正在切换过去的协议。
 该过程在协议升级机制（Protocol upgrade mechanism）中详细描述。

状态
--
```

101 Switching Protocol
```

示例
--

在使用 WebSockets 时会用到协议切换。
```

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

规范
--

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

参见
--

* Protocol upgrade mechanism
* WebSockets
* `Upgrade` (en-US)
* `426` `Upgrade Required`
451 Unavailable For Legal Reasons
=================================

**`451 Unavailable For Legal Reasons`**（因法律原因不可用）是一种 HTTP 协议的错误状态代码，表示服务器由于法律原因，无法提供客户端请求的资源，例如可能会导致法律诉讼的页面。

状态
--
```

451 Unavailable For Legal Reasons
```

示例
--

这个响应示例来自 IETF RFC 规范（见下文），其中提到了英国戏剧电影Monty Python's Life of Brian（《蒙提·派森之布莱恩的一生》）。

注意 `Link` 首部中可能会包含一个 `rel="blocked-by"` 字段，用于标明为该资源无法提供负责的主体，例如颁布法令将资源删除的个人或组织的名称。
```

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>
```

规范
--

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

浏览器兼容性
------

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

相关内容
----

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

在 HTTP 协议中，响应状态码 **`203 Non-Authoritative Information`** 表示请求已经成功被响应，但是获得的负载与源头服务器的状态码为 `200` (`OK`) 的响应相比，经过了拥有转换功能的 proxy（代理服务器）的修改。

The `203` 状态码有点类似于 `Warning` 首部的 `214`（Transformation Applied）警告码，后者的优势在于可以应用于任何状态码的响应之中。

状态
--
```

203 Non-Authoritative Information
```

规范
--

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

相关内容
----

* `200`
* Proxy server
* `Warning`
504 Gateway Timeout
===================

**`504 Gateway Timeout`** 是一种 HTTP 协议的服务器端错误状态代码，表示扮演网关或者代理的服务器无法在规定的时间内获得想要的响应。

Gateway（网关）在计算机网络体系中可以指代不同的设备，504 错误通常不是在客户端可以修复的，而是需要由途径的 Web 服务器或者代理服务器对其进行修复。

状态
--
```

504 Gateway Timeout
```

规范
--

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

浏览器兼容性
------

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

相关内容
----

* `502`
402 Payment Required
====================

**实验性:** **这是一项实验性技术**  
在将其用于生产之前，请仔细检查浏览器兼容性表格。

**`402 Payment Required`** 是一个被保留使用的非标准客户端错误状态响应码。

有时，这个状态码表明直到客户端付费之后请求才会被处理。402 状态码被创建最初目的是用于数字现金或微型支付系统，表明客户端请求的内容只有付费之后才能获取。目前还不存在标准的使用约定，不同的实体可以在不同的环境下使用。

状态
--


```http
402 Payment Required
```

响应样例
----


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

规范
--

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

浏览器兼容性
------

这个状态代码是*保留*的，但没有定义。实际上没有浏览器支持它，错误将被显示为一个通用的 `4xx` 状态代码。

参见
--

* HTTP 认证
500 Internal Server Error
=========================

在 HTTP 协议中，**`500 Internal Server Error`** 是表示服务器端错误的响应状态码，意味着所请求的服务器遇到意外的情况并阻止其执行请求。

这个错误代码是一个通用的“万能”响应代码。有时候，对于类似于 500 这样的错误，服务器管理员会更加详细地记录相关的请求信息来防止以后同样错误的出现。

状态
--
```

500 Internal Server Error
```

规范
--

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

浏览器兼容性
------

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

参见
--

* HTTP/1.1: Status Code Definitions
* HTTP Error 500 on WordPress
* 500 server error
* 500 server error on Joomla
301 Moved Permanently
=====================

HTTP **`301 Moved Permanently`** 说明请求的资源已经被移动到了由 `Location` 头部指定的 url 上，是固定的不会再改变。搜索引擎会根据该响应修正。

**备注：** 尽管规范要求浏览器在收到该响应并进行重定向时不应该修改 http method 和 body，但并非所有的用户代理都符合此要求。所以最好将 301 状态码用作 `GET` 或 `HEAD` 方法的响应，而对于 `POST` 则改用 `308 Permanent Redirect`，因为此状态码会禁止更改请求方法。

状态
--


```http
301 Moved Permanently
```

示例
--

### 客户端请求


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

### 服务端响应


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

规范
--

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

浏览器兼容性
------

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

参见
--

* `308`，当使用的请求方法永远不会更改时，等价于此状态代码。
* `302`，临时重定向
406 Not Acceptable
==================

HTTP 协议中的 **`406 Not Acceptable`** 状态码表示客户端错误，指代服务器端无法提供与 `Accept-Charset` 以及 `Accept-Language` 消息头指定的值相匹配的响应。

主动内容协商标头包括：

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

实际上，这种错误极少使用。服务器不应使用此错误代码响应，因为它对终端用户来说很难理解和修复，而是忽略相关的标头并向用户提供实际页面。假设即使用户不完全满意，他们也会更喜欢这种情况，而不是错误代码。

如果服务器返回了这个错误状态码，那么消息体中应该包含所能提供的资源表现形式的列表，允许用户手动进行选择。

状态
--
```

406 Not Acceptable
```

规范
--

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

浏览器兼容性
------

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

参见
--

* `Accept-Language`
* `Accept-Charset`
* HTTP 内容协商
408 Request Timeout
===================

响应状态码 **`408 Request Timeout`** 表示服务器想要将没有在使用的连接关闭。一些服务器会在空闲连接上发送此信息，即便是在客户端没有发送任何请求的情况下。

服务器应该在此类响应中将 `Connection` 首部的值设置为 "close"，因为 `408` 意味着服务器已经决定将连接关闭，而不是继续等待。

这类响应出现的比较频繁，源于一些浏览器——例如 Chrome, Firefox 27+, 或者 IE9 等——使用 HTTP 协议中的预连接机制来加速上网体验。同时应该注意到，某些服务器会直接关闭连接，而不发送此类消息。

状态
--
```

408 Request Timeout
```

规范
--

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

相关内容
----

* `Connection`
* `X-DNS-Prefetch-Control`
410 Gone
========

HTTP **`410 Gone`** 说明请求的目标资源在原服务器上不存在了，并且是永久性的丢失。如果不清楚是否为永久或临时的丢失，应该使用`404`

**备注：** 410 响应默认会被缓存

状态
--
```

410 Gone
```

规范
--

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

浏览器兼容性
------

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

更多可见
----

* `404`
421 Misdirected Request
=======================

HTTP **`421 Misdirected Request`** 客户端错误响应状态码表明，请求被定向到一个无法生成响应的服务器。如果连接被重复使用或选择了其他服务，就有可能出现这种情况。

状态
--


```http
421 Misdirected Request
```

规范
--

| Specification |
| --- |
| HTTP Semantics # name-421-misdirected-request |
425 Too Early
=============

状态码 **`425 Too Early`** 代表服务器不愿意冒风险来处理该请求，原因是处理该请求可能会被“重放”，从而造成潜在的重放攻击。

状态
--
```

425 Too Early
```

规范
--

| Specification |
| --- |
| Using Early Data in HTTP # status |

浏览器兼容性
------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
103 Early Hints
===============

**`103 Early Hints`** 信息状态响应码，一般和 `Link` header（首部）一起使用，来允许用户在服务器还在准备响应数据的时候预加载一些资源。

状态码
---
```

103 Early Hints
```

规范
--

| Specification |
| --- |
| An HTTP Status Code for Indicating Hints # section-2 |
| HTML Standard # early-hints |

浏览器兼容性
------

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

另见
--

* `Link`
414 URI Too Long
================

响应码 **`414 URI Too Long`** 表示客户端所请求的 URI 超过了服务器允许的范围。

以下是造成这种罕见情况的几种可能原因：

* 当客户端误将 `POST` 请求当作 `GET` 请求时，会带有一个较长的查询字符串 (query)；
* 当客户端堕入重定向循环黑洞时，例如，指向自身后缀的重定向 URI 前缀 (a redirected URI prefix that points to a suffix of itself)；
* 当客户端对服务器进行攻击，试图寻找潜在的漏洞时。
状态
--
```

414 URI Too Long
```

规范
--

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

相关内容
----

* URI
201 Created
===========

在 HTTP 协议中，**`201 Created`** 是一个代表成功的应答状态码，表示请求已经被成功处理，并且创建了新的资源。新的资源在应答返回之前已经被创建。同时新增的资源会在应答消息体中返回，其地址或者是原始请求的路径，或者是 `Location` 首部的值。

这个状态码的常规使用场景是作为 `POST` 请求的返回值。

状态
--
```

201 Created
```

规范
--

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

浏览器兼容性
------

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

参见
--

* HTTP request methods
418 I'm a teapot
================

HTTP **`418 I'm a teapot`** 客户端错误响应代码表示服务器拒绝冲泡咖啡，因为它是个茶壶。

该错误是超文本咖啡壶控制协议的参考，和 1998 年愚人节的玩笑。

状态
--
```

418 I'm a teapot
```

规范
--

| Specification |
| --- |
| RFC 2324 # section-2.3.2 |

浏览器兼容性
------

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

请参见参考
-----

* Wikipedia: Hyper Text Coffee Pot Control Protocol
429 Too Many Requests
=====================

在 HTTP 协议中，响应状态码 **`429 Too Many Requests`** 表示在一定的时间内用户发送了太多的请求，即超出了“频次限制”。

在响应中，可以提供一个 `Retry-After` 首部来提示用户需要等待多长时间之后再发送新的请求。

状态
--
```

429 Too Many Requests
```

示例
--
```

HTTP/1.1 429 Too Many Requests
Content-Type: text/html
Retry-After: 3600
```

规范
--

| Specification |
| --- |
| RFC 6585 # section-4 |

相关内容
----

* `Retry-After`
506 Variant Also Negotiates
===========================

HTTP 协议的 **`506 Variant Also Negotiates`** 响应状态码 可以在 TCN（透明内容协商，见 RF2295）上下文给出。TCN 协议允许客户端取回给定资源的最佳变量/变元，这里服务器支持多个变量/变元。

506 码表示内部服务器配置错误，其中所选变量/变元自身被配置为参与内容协商，因此并不是合适的协商端点。

Status
------
```

506 Variant Also Negotiates
```

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

| Specification |
| --- |
| RFC 2295 # section-8.1 |
400 Bad Request
===============

超文本传输协议（HTTP）**400 `Bad Request`** 响应状态码表示服务器因某些被认为是客户端错误的原因（例如，请求语法错误、无效请求消息格式或者欺骗性请求路由），而无法或不会处理该请求。

**警告：** 客户端不应该在未进行修改的情况下重复发送此请求。

状态
--
```

400 Bad Request
```

规范
--

| Specification |
| --- |
| HTTP Semantics # status.400 |
307 Temporary Redirect
======================

HTTP **`307 Temporary Redirect`**，临时重定向响应状态码，表示请求的资源暂时地被移动到了响应的 `Location` 首部所指向的 URL 上。

原始请求中的请求方法和消息主体会在重定向请求中被重用。在确实需要将重定向请求的方法转换为 `GET` 的场景下，可以考虑使用 `303 See Other` 状态码。例如，在使用 `PUT` 方法进行文件上传操作时，如果需要返回一条确认信息（例如“你已经成功上传了 XYZ”），而不是返回上传的资源本身，就可以使用这个状态码。

状态码 `307` 与 `302` 之间的唯一区别在于，当发送重定向请求的时候，`307` 状态码可以确保请求方法和消息主体不会发生变化。如果使用 `302` 响应状态码，一些旧客户端会错误地将请求方法转换为 `GET`：也就是说，在 Web 中，如果使用了 `GET` 以外的请求方法，且返回了 `302` 状态码，则重定向后的请求方法是不可预测的；但如果使用 `307` 状态码，之后的请求方法就是可预测的。对于 `GET` 请求来说，两种情况没有区别。

状态码
---
```

307 Temporary Redirect
```

规范
--

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

浏览器兼容性
------

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

参见
--

* `302 Found`, the equivalent of this status code, but that may change the method used when it is not a `GET`.
* `303 See Other`, a temporary redirect that changes the method used to `GET`.
* `301 Moved Permanently`, a permanent redirect
431 Request Header Fields Too Large
===================================

响应码 **`431 Request Header Fields Too Large`** 表示由于请求中的首部字段的值过大，服务器拒绝接受客户端的请求。客户端可以在缩减首部字段的体积后再次发送请求。

该响应码可以用于首部总体体积过大的情况，也可以用于单个首部体积过大的情况。

这种错误不应该出现于经过良好测试的投入使用的系统当中，而是更多出现于测试新系统的时候

状态
--
```

431 Request Header Fields Too Large
```

规范
--

| Specification |
| --- |
| RFC 6585 # section-5 |

相关内容
----

* Request header
502 Bad Gateway
===============

**`502 Bad Gateway`** 是一种 HTTP 协议的服务端错误状态代码，它表示作为网关或代理的服务器，从上游服务器中接收到的响应是无效的。

**备注：** 网关在计算机网络体系中可以指代不同的设备，502 错误通常不是客户端能够修复的，而是需要由途经的 Web 服务器或者代理服务器对其进行修复。

状态
--
```

502 Bad Gateway
```

规范
--

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

浏览器兼容性
------

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

参见
--

* `504`
* HTTP/1.1：状态码定义
205 Reset Content
=================

在 HTTP 协议中，响应状态码 **`205 Reset Content`** 用来通知客户端重置文档视图，比如清空表单内容、重置 canvas 状态或者刷新用户界面。

状态
--
```

205 Reset Content
```

规范
--

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

相关内容
----

* `204` No Content
303 See Other
=============

HTTP **303 See Other** 重定向状态码，通常作为 `PUT` 或 `POST` 操作的返回结果，它表示重定向链接指向的不是新上传的资源，而是另外一个页面，比如消息确认页面或上传进度页面。而请求重定向页面的方法要总是使用 `GET`。

状态
--
```

303 See Other
```

规范
--

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

浏览器兼容性
------

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

更多可见
----

* `302` `Found`, the temporary redirect
404 Not Found
=============

HTTP 响应状态码 **`404 Not Found`** 指的是服务器无法找到所请求的资源。返回该响应的链接通常称为坏链（broken link）或死链（dead link），它们会导向链接出错处理（link rot）页面。

404 状态码并不能说明请求的资源是临时还是永久丢失。如果服务器知道该资源是永久丢失，那么应该返回 `410`（Gone）而不是 404。

状态
--
```

404 Not Found
```

自定义错误页面
-------

你可以自定义 404 页面，使其对用户更友好，以及提供一些引导。例如，Apache 服务器可以在 `.htaccess` 文件中指定自定义 404 页面的路径，代码片段如下：
```

ErrorDocument 404 /notfound.html
```


这里有一个自定义 404 页面的示例，参见 404 页面。

**备注：** 适度的自定义是有益的。尽管构建一个幽默、人性化而不会使得用户感到困惑的 404 页面。

规范
--

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

浏览器兼容性
------

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

参见
--

* `410`
* 维基百科：HTTP 404
200 OK
======

状态码 **`200 OK`** 表明请求已经成功。默认情况下状态码为 200 的响应可以被缓存。

不同请求方式对于请求成功的意义如下：

* `GET`: 已经取得资源，并将资源添加到响应的消息体中。
* `HEAD`: 响应的消息体为头部信息。
* `POST`: 响应的消息体中包含此次请求的结果。
* `TRACE`: 响应的消息体中包含服务器接收到的请求信息。

`PUT` 和 `DELETE` 的请求成功通常并不是响应`200` `OK`的状态码而是 `204` `No Content` 表示无内容（或者 `201` `Created`表示一个资源首次被创建成功）。

状态码
---
```

200 OK
```

规范
--

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

浏览器兼容性
------

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

相关内容
----

* HTTP 请求方法
507 Insufficient Storage
========================

HTTP 协议的 **`507 Insufficient Storage`** 响应状态码 可以在 WebDAV 协议（基于 web 的分布式创作和版本控制，参见 RFC 4918）中给出。

507 码表示服务器不能存储相关内容。准确地说，一个方法可能没有被执行，因为服务器不能存储其表达形式，这里的表达形式指：方法所附带的数据，而且其请求必需已经发送成功。

Status
------
```

507 Insufficient Storage
```

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

| Specification |
| --- |
| RFC 4918 # section-11.5 |
428 Precondition Required
=========================

在 HTTP 协议中，响应状态码 **`428 Precondition Required`** 表示服务器端要求发送条件请求。

一般的，这种情况意味着必要的条件首部——如 `If-Match`——的**缺失**。

当一个条件首部的值**不能匹配**服务器端的状态的时候，应答的状态码应该是 `412` `Precondition Failed`，前置条件验证失败。

状态
--
```

428 Precondition Required
```

规范
--

| Specification |
| --- |
| RFC 6585 # section-3 |

相关内容
----

* HTTP conditional requests
* `If-Match`
* `412`
401 Unauthorized
================

状态码 **`401 Unauthorized`** 代表客户端错误，指的是由于缺乏目标资源要求的身份验证凭证，发送的请求未得到满足。

这个状态码会与 `WWW-Authenticate` 首部一起发送，其中包含有如何进行验证的信息。

这个状态类似于 `403`，但是在该情况下，依然可以进行身份验证。

状态
--
```

401 Unauthorized
```

响应示例
----
```

HTTP/1.1 401 Unauthorized
Date: Wed, 21 Oct 2015 07:28:00 GMT
WWW-Authenticate: Basic realm="Access to staging site"
```

规范
--

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

浏览器兼容性
------

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

相关内容
----

* HTTP authentication
* `WWW-Authenticate`
* `Authorization`
* `Proxy-Authorization`
* `Proxy-Authenticate`
* `403`, `407`
503 Service Unavailable
=======================

**`503 Service Unavailable`** 是一种 HTTP 协议的服务器端错误状态代码，它表示服务器尚未处于可以接受请求的状态。

通常造成这种情况的原因是由于服务器停机维护或者已超载。注意在发送该响应的时候，应该同时发送一个对用户友好的页面来解释问题发生的原因。该种响应应该用于临时状况下，与之同时，在可行的情况下，应该在 `Retry-After` 首部字段中包含服务恢复的预期时间。

缓存相关的首部在与该响应一同发送时应该小心使用，因为 503 状态码通常应用于临时状况下，而此类响应一般不应该进行缓存。

状态
--
```

503 Service Unavailable
```

规范
--

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

浏览器兼容性
------

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

相关内容
----

* `Retry-After`
204 No Content
==============

HTTP **`204 No Content`** 成功状态响应码，表示该请求已经成功了，但是客户端客户不需要离开当前页面。默认情况下 204 响应是可缓存的。一个 `ETag` 标头包含在此类响应中。

使用惯例是，在 `PUT` 请求中进行资源更新，但是不需要改变当前展示给用户的页面，那么返回 204 No Content。如果创建了资源，则返回 `201` `Created` 。如果应将页面更改为新更新的页面，则应改用 `200` 。

状态
--
```

204 No Content
```

规范
--

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

浏览器兼容性
------

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

参见
--

* HTTP request methods
302 Found
=========

HTTP **`302 Found`** 重定向状态码表明请求的资源被暂时的移动到了由该 HTTP 响应的响应头 `Location` 指定的 URL 上。浏览器会重定向到这个 URL，但是搜索引擎不会对该资源的链接进行更新 (In SEO-speak, it is said that the link-juice is not sent to the new URL)。

即使规范要求浏览器在重定向时保证请求方法和请求主体不变，但并不是所有的用户代理都会遵循这一点，你依然可以看到有缺陷的软件的存在。所以推荐仅在响应 `GET` 或 `HEAD` 方法时采用 302 状态码，而在其他时候使用 `307` Temporary Redirect 来替代，因为在这些场景下方法变换是明确禁止的。

在确实需要将重定向请求的方法转换为 `GET`的场景下，可以使用 `303` See Other。例如在使用 `PUT` 方法进行文件上传操作时，需要返回确认信息（例如“你已经成功上传了 xyz”）而不是上传的资源本身，就可以使用这个状态码。

状态
--
```

302 Found
```

规范
--

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

浏览器兼容性
------

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

更多可见
----

* `307` `Temporary Redirect`, the equivalent of this status code, but that never changes the method used.
* `303` `See Also`, a temporary redirect that changes the method used to `GET`.
* `301` `Moved Permanently`, the permanent redirect.
405 Method Not Allowed
======================

状态码 **`405 Method Not Allowed`** 表明服务器禁止了使用当前 HTTP 方法的请求。

状态码
---
```

405 Method Not Allowed
```

规范
--

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

参见
--

* `Allow`
* 405 Method Not Allowed
409 Conflict
============

响应状态码 **`409 Conflict`** 表示请求与服务器端目标资源的当前状态相冲突。

冲突最有可能发生在对 `PUT` 请求的响应中。例如，当上传文件的版本比服务器上已存在的要旧，从而导致版本冲突的时候，那么就有可能收到状态码为 409 的响应。

状态
--
```

409 Conflict
```

规范
--

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

相关内容
----

* `PUT`
411 Length Required
===================

响应状态码 **`411 Length Required`** 属于客户端错误，表示由于缺少确定的`Content-Length` 首部字段，服务器拒绝客户端的请求。

注意，按照规范，当使用分块模式传输数据的时候， `Content-Length` 首部是不存在的，但是需要在每一个分块的开始添加该分块的长度，用十六进制数字表示。参见 `Transfer-Encoding` 获取更多细节信息。

状态
--
```

411 Length Required
```

规范
--

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

相关内容
----

* `Content-Length`
* `Transfer-Encoding`
424 Failed Dependency
=====================

HTTP **`424 Failed Dependency`** 客户端错误响应代码表明，由于请求的操作依赖于另一个操作，且该操作失败，因此无法在资源上执行该方法。

普通 web 服务器通常不会返回此状态代码。但其他一些协议，如 WebDAV 可以返回该状态代码。例如，在 WebDAV 中，如果发出了 `PROPPATCH` 请求，其中一条命令失败，那么其他命令也会自动以 `424 Failed Dependency` 的形式失败。

状态
--


```http
424 Failed Dependency
```

规范
--

| Specification |
| --- |
| RFC 4918 # section-11.4 |

参见
--

* `403`（Forbidden）
415 Unsupported Media Type
==========================

**`415 Unsupported Media Type`** 是一种 HTTP 协议的错误状态代码，表示服务器由于不支持其有效载荷的格式，从而拒绝接受客户端的请求。

格式问题的出现有可能源于客户端在 `Content-Type` 或 `Content-Encoding` 首部中指定的格式，也可能源于直接对负载数据进行检测的结果。

状态
--
```

415 Unsupported Media Type
```

规范
--

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

相关内容
----

* `Content-Type`
* `Content-Encoding`
* `Accept`
102 Processing
==============

**已弃用:** 不再推荐使用该特性。虽然一些浏览器仍然支持它，但也许已从相关的 web 标准中移除，也许正准备移除或出于兼容性而保留。请尽量不要使用该特性，并更新现有的代码；参见本页面底部的兼容性表格以指导你作出决定。请注意，该特性随时可能无法正常工作。

在 HTTP 协议中，**`102 Processing`** 状态码向客户端表示已收到完整请求，并且服务器正在处理该请求。

仅当服务器预计请求需要很长时间时会发送此状态码，以告知客户端请求尚未终止。

**备注：** 此状态码已被弃用，不应再发送。客户端可能仍然接受并简单地忽略该状态码。

状态
--
```

102 Processing
```

规范
--

| Specification |
| --- |
| Unknown specification # section-10.1 |

参见
--

* `Expect`
* `100`
标识互联网上的内容
=========

HTTP 请求的内容通称为"资源"。”资源“这一概念非常宽泛，它可以是一份文档，一张图片，或所有其他你能够想到的格式。每个资源都由一个 (URI) 来进行标识。

一般情况下，资源的名称和位置由同一个 URL（统一资源定位符，它是 URI 的一种）来标识。也有某些特殊情况，资源的名称和位置由不同的 URI 进行标识：例如，待请求的资源希望客户端从另外一个位置访问它。我们可以使用一个特定的首部字段，`Alt-Svc`，来指示这种情况。

URLs 与 URNs
-----------

### URLs

URI 的最常见形式是统一资源定位符 (URL)，它也被称为 *Web 地址*。
```

https://developer.mozilla.org
https://developer.mozilla.org/zh-CN/docs/Learn/
https://developer.mozilla.org/zh-CN/search?q=URL
```


在浏览器的地址栏中输入上述任一地址，浏览器就会加载相应的网页（资源）。

URL 由多个必须或可选的组件构成。下面给出了一个复杂的 URL：
```

http://www.example.com:80/path/to/myfile.html?key1=value1&key2=value2#SomewhereInTheDocument
```

### URNs

URN 是另一种形式的 URI，它通过特定命名空间中的唯一名称来标识资源。
```

urn:isbn:9780141036144
urn:ietf:rfc:7230
```


上面两个 URN 标识了下面的资源：

* 乔治·奥威尔所著的《1984》
* IETF 规范 7230，超文本传输 协议 (HTTP/1.1)：Message Syntax and Routing.
统一资源标识符的语法 (URI)
----------------

### 方案或协议

![Protocol](/zh-CN/docs/Web/HTTP/Basics_of_HTTP/Identifying_resources_on_the_Web/mdn-url-protocol@x2.png)

`http://`告诉浏览器使用何种协议。对于大部分 Web 资源，通常使用 HTTP 协议或其安全版本，HTTPS 协议。另外，浏览器也知道如何处理其他协议。例如， `mailto:` 协议指示浏览器打开邮件客户端；`ftp:`协议指示浏览器处理文件传输。常见的方案有：



| 方案 | 描述 |
| --- | --- |
| data | Data URIs |
| file | 指定主机上文件的名称 |
| ftp | 文件传输协议 |
| http/https | 超文本传输 协议／安全的超文本传输协议 |
| mailto | 电子邮件地址 |
| ssh | 安全 shell |
| tel | 电话 |
| urn | 统一资源名称 |
| view-source | 资源的源代码 |
| ws/wss | （加密的）WebSocket (en-US) 连接 |

### 主机

![Domaine Name](/zh-CN/docs/Web/HTTP/Basics_of_HTTP/Identifying_resources_on_the_Web/mdn-url-domain@x2.png)

`www.example.com` 既是一个域名，也代表管理该域名的机构。它指示了需要向网络上的哪一台主机发起请求。当然，也可以直接向主机的 IP address 地址发起请求。但直接使用 IP 地址的场景并不常见。

### 端口

![Port](/zh-CN/docs/Web/HTTP/Basics_of_HTTP/Identifying_resources_on_the_Web/mdn-url-port@x2.png)

`:80` 是端口。它表示用于访问 Web 服务器上资源的技术“门”。如果访问的该 Web 服务器使用 HTTP 协议的标准端口（HTTP 为 80，HTTPS 为 443）授予对其资源的访问权限，则通常省略此部分。否则端口就是 URI 必须的部分。

### 路径

![Path to the file](/zh-CN/docs/Web/HTTP/Basics_of_HTTP/Identifying_resources_on_the_Web/mdn-url-path@x2.png)

`/path/to/myfile.html` 是 Web 服务器上资源的路径。在 Web 的早期，类似这样的路径表示 Web 服务器上的物理文件位置。现在，它主要是由没有任何物理实体的 Web 服务器抽象处理而成的。

### 查询

![Parameters](/zh-CN/docs/Web/HTTP/Basics_of_HTTP/Identifying_resources_on_the_Web/mdn-url-parameters@x2.png)

`?key1=value1&key2=value2` 是提供给 Web 服务器的额外参数。这些参数是用 & 符号分隔的键/值对列表。Web 服务器可以在将资源返回给用户之前使用这些参数来执行额外的操作。每个 Web 服务器都有自己的参数规则，想知道特定 Web 服务器如何处理参数的唯一可靠方法是询问该 Web 服务器所有者。

### 片段

![Anchor](/zh-CN/docs/Web/HTTP/Basics_of_HTTP/Identifying_resources_on_the_Web/mdn-url-anchor@x2.png)

`#SomewhereInTheDocument` 是资源本身的某一部分的一个锚点。锚点代表资源内的一种“书签”，它给予浏览器显示位于该“加书签”点的内容的指示。例如，在 HTML 文档上，浏览器将滚动到定义锚点的那个点上；在视频或音频文档上，浏览器将转到锚点代表的那个时间。值得注意的是 # 号后面的部分，也称为片段标识符，永远不会与请求一起发送到服务器。

示例
--
```

https://developer.mozilla.org/zh-CN/docs/Learn
tel:+1-816-555-1212
git@github.com:mdn/browser-compat-data.git
ftp://example.org/resource.txt
urn:isbn:9780141036144
```

规范
--

| Specification |
| --- |
| HTTP Semantics # uri |

参见
--

* What is a URL?
* IANA list of URI schemes