1、定义
Http(HyperText Transfer Protocol):超文本传输协议
- 用于从万维网服务器传输超文本到本地浏览器的传送协议。
- 基于TCP/IP通信协议来传递数据。
2、工作原理
工作于客户端-服务端(CS)架构,浏览器作为HTTP客户端通过URL想HTTP服务端发送所有请求。
默认端口80
3、注意事项
- 无连接:限制每次链接只处理一个请求。服务器处理完客户的请求,并受到客户的应答后,断开连接,用来节省传输时间。
- 媒体独立:客户端和服务器知道如何处理数据内容,任何类型的数据都可以通过Http发送,只需要指定合适的MIME-type内容类型。
- 无状态:协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,就必须重传,可能导致每次连接传送的数据量增大。
4、消息结构
HTTP是基于CS架构模型,通过一个可靠的连接来交换信息,是一个无状态的请求/响应协议。
HTTP使用同一资源标识符(URI)来传输数据库和建立连接。
请求消息组成:请求行、请求头、空行、请求数据
响应消息组成:状态行、消息报头、空行、响应正文
5、请求方法
HTTP1.0定义了三种:GET、POST、HEAD;
HTTP1.1新增了六种:OPTIONS、PUT、PATCH、DELETE、TRACE、CONNECT。
序号 | 方法 | 描述 |
1 | GET | 请求指定的页面信息,并返回实体主体。 |
2 | POST | 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。 |
3 | HEAD | 类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头 |
4 | OPTIONS | 允许客户端查看服务器的性能。 |
5 | PUT | 从客户端向服务器传送的数据取代指定的文档的内容。 |
6 | PATCH | 是对 PUT 方法的补充,用来对已知资源进行局部更新 。 |
7 | DELETE | 请求服务器删除指定的页面。 |
8 | TRACE | 回显服务器收到的请求,主要用于测试或诊断。 |
9 | CONNECT | HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。 |
6、HTTP请求头信息
请求行 | GET | / | HTTP/1.1 |
描述 | 请求方法 | URL | 协议版本 |
请求头 | 说明 |
Connection | 表示是否需要持久连接(HTTP 1.1默认进行持久连接) |
Cache-Control | 指定请求和响应遵循的缓存机制 |
Host | 指定请求的服务器的域名和端口号 |
Pragma | 用来包含实现特定的指令 |
Accept | 指定客户端能够接受的内容类型 |
Accept-Encoding | 指定浏览器可以支持的web服务器返回内容压缩编码类型 |
Accept-Language | 浏览器可接受的语言 |
Cookie | HTTP请求发送时,会把保存在该请求域名下的所有cookie值一起发送给web服务器 |
User-Agent | User-Agent的内容包含发出请求的用户信息 |
7、HTTP响应头信息
状态行 | HTTP/1.1 | 200 | OK |
描述 | 协议版本 | 状态码 | 状态描述 |
应答头 | 说明 |
Connection | 表示是否需要持久连接(HTTP 1.1默认进行持久连接) |
Cache-Control | 指定请求和响应遵循的缓存机制 |
Content-Encoding | web服务器支持的返回内容压缩编码类型。 |
Content-Type | 返回内容的MIME类型 |
Date | 原始服务器消息发出的时间 |
Server | web服务器软件名称 |
Set-Cookie | 设置Http Cookie |
Vary | 告诉下游代理是使用缓存响应还是从原始服务器请求 |
Transfer-Encoding | 文件传输编码 |
8、HTTP(HTTP Status Code)状态码
常见状态码:
- 200:请求成功
- 301:资源被永久转移到其他URL
- 404:请求的资源不存在
- 500:内部服务器错误
分类(由三个十进制数组组成,第一个数字定义了状态码的类型):
- 1**:信息,服务器收到请求,需要请求者继续执行操作
- 2**:成功,操作被成功接受并处理
- 3**:重定向,需要进一步的操作以完成请求
- 4**:客户端错误,请求包含语法错误或无法完成请求
- 5**:服务器错误,服务器在处理请求的过程中发生了错误