### 协议规范

规范把http请求分为三个部分:

* 起始行 CRLF

* 消息报头 CRLF

* 消息主体

#### 起始行

* **请求**: 请求方法,url,http版本信息

* **响应**: http版本,状态吗,状态码原因短语

*响应码:*

**1xx:**指示信息--表示请求已接收,继续处理

**2xx:**成功--表示请求已被成功接收、理解、接受

**3xx:**重定向--要完成请求必须进行更进一步的操作

**4xx:**客户端错误--请求有语法错误或请求无法实现

**5xx:**服务器端错误--服务器未能实现合法的请求**

**200:**请求被正常处理

**204:**请求被受理但没有资源可以返回

**206:**客户端只是请求资源的一部分,服务器只对请求的部分资源执行GET方法,相应报文中通过Content-Range指定范围的资源。

**301:**永久性重定向

**302:**临时重定向

**303:**与302状态码有相似功能,只是它希望客户端在请求一个URI的时候,能通过GET方法重定向到另一个URI上

**304:**发送附带条件的请求时,条件不满足时返回,与重定向无关

**307:**临时重定向,与302类似,只是强制要求使用POST方法

**400:**请求报文语法有误,服务器无法识别

**401:**请求需要认证

**403:**请求的对应资源禁止被访问

**404:**服务器无法找到对应资源

**500:**服务器内部错误

**503:**服务器正忙1xx:指示信息--表示请求已接收,继续处理

#### 消息报头

* 通用首部字段

> Date 日期

> Connection 连接管理

> Cache-Control 缓存控制

> Transfer-Encoding 报文主题的传输编码方式

* 请求首部字段

> Host 请求资源所在服务器

> Accept 可处理的媒体类型

> Accept-Charset 可接受的字符集

> Accept-Encoding 可接受的内容编码

> Accept-Language 可接受的自然语言

* 响应首部字段

> Accept-Ranges 可接受的字节范文

> Location 令客户端重定向的到的URI

> Server Http服务器的安装信息

* 实体首部字段

> Allow 资源可支持的http方法

> Content-Type 实体类型

> Content-Encoding 实体主体使用的编码方式

> Content-Language 实体主体的自然语言

> Content-Length 实体主体的字节数

> Content-Range 实体主体的位置范围,请求时使用

#### 消息主体

> 传输的主体数据

### 请求方式

* GET 获取资源

* POST 提交资源

* DELETE 删除

* PUT 修改

* OPTIONS 无返回的

* TRACE 测试和诊断

* PATCH put补充,局部修改