HTTP协议
HTTP 协议的主要特点:
1. 支持客户/服务器模式。
2. 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。
请求方法常用的有 GET、HEAD、POST。
每种方法规定了客户与服务器联系的类型不同。
由于 HTTP 协议简单,使得 HTTP 服务器的程序规模小,因而通信速度很快。
3. 灵活:HTTP 允许传输任意类型的数据对象。
正在传输的类型由 Content-Type 加以标记。
4. 无连接:无连接的含义是限制每次连接只处理一个请求。
服务器处理完客户的请求,并收到客户的应答后,即断开连接。
采用这种方式可以节省传输时间。
5. 无状态:HTTP 协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。
缺少状态意味着如果后续处理需要前面的信息,则它必须重传。
这样可能导致每次连接传送 的数据量增大。
另一方面,在服务器不需要先前信息时它的应答就较快
方法(操作) | 意义 |
---|---|
GET | 请求获取 Request-URI 所标识的资源 |
POST | 在 Request-URI 所标识的资源后附加新的数据 |
HEAD | 请求获取由 Request-URI 所标识的资源的响应消息报头 |
PUT | 请求服务器存储一个资源,并用 Request-URI 作为其标识 |
DELETE | 请求服务器删除 Request-URI 所标识的资源 |
TRACE | 请求服务器回送收到的请求信息,主要用于测试或诊断 |
CONNECT | 保留将来使用 |
OPTIONS | 请求查询服务器的性能,或者查询与资源相关的选项和需求 |
HTTP 响应也是由三个部分组成,分别是:状态行、消息报头、响应正文
1、状态行格式如下:
状态行 | 意义 |
---|---|
HTTP-Version | 表示服务器 HTTP 协议的版本; |
Status-Code | 表示服务器发回的响应状态代码; |
Reason-Phrase | 表示状态代码的文本描述。 |
状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值:
方法(操作) | 意义 |
---|---|
1xx | 指示信息–表示请求已接收,继续处理 |
2xx | 成功–表示请求已被成功接收、理解、接受 |
3xx | 重定向–要完成请求必须进行更进一步的操作 |
4xx | 客户端错误–请求有语法错误或请求无法实现 |
5xx | 服务器端错误–服务器未能实现合法的请求 |
常见状态代码、状态描述、说明:
常见的状态码 | 意义 |
---|---|
200 | OK 客户端请求成功 |
400 Bad Request | 客户端请求有语法错误,不能被服务器所理解 |
401 Unauthorized | 请 求 未 经 授 权 , 这 个 状 态 代 码 必 须 和 WWW-Authenticate 报头域一起使用 |
403 Forbidden | 服务器收到请求,但是拒绝提供服务 |
404 Not Found | 请求资源不存在,eg:输入了错误的 URL |
500 Internal Server Error | 服务器发生不可预期的错误 |
503 Server Unavailable | 服 务 器 当 前 不 能 处 理 客 户 端 的 请 求 , 一 段 时 间 后 ,可能恢复正常 |
消息报头
HTTP 消息报头包括普通报头、请求报头、响应报头、实体报头。
每一个报头域都是由名字+“:”+空格+值 组成,消息报头域的名字是大小写无关的。