HTTP协议简介
- 官方解释
在Web应用中,服务器把网页传给浏览器,实际上就是把网页的HTML代码发送给浏览器,让浏览器显示出来。而浏览器和服务器之间的传输协议是HTTP,所以:
HTML是一种用来定义网页的文本,会HTML,就可以编写网页;
HTTP是在网络上传输HTML的协议,用于浏览器和服务器的通信。
HTTP格式
每个HTTP请求和响应都遵循相同的格式,一个HTTP包含Header和Body两部分,其中Body是可选的。
HTTP协议是一种文本协议,所以,它的格式也非常简单。
- HTTP GET请求的格式:
GET /path HTTP/1.1
Header1: Value1
Header2: Value2
Header3: Value3
- HTTP POST请求的格式:
POST /path HTTP/1.1
Header1: Value1
Header2: Value2
Header3: Value3
body data goes here...
- HTTP响应的格式:
200 OK
Header1: Value1
Header2: Value2
Header3: Value3
body data goes here...
HTTP响应如果包含body,也是通过\r\n\r\n来分隔的。
请再次注意,Body的数据类型由Content-Type头来确定,如果是网页,Body就是文本,
如果是图片,Body就是图 片的二进制数据。
当存在Content-Encoding时,Body数据是被压缩的,最常见的压缩方式是gzip,所以,
看到Content-Encoding: gzip时,需要将Body数据先解压缩,才能得到真正的数据。
压缩的目的在于减少Body的大小,加快网络传输。
HTTP状态码
- HTTP状态码的英文为HTTP Status Code
常见的HTTP状态码:
200 - 请求成功
301 - 网页等资源被永久转移到其它URL
302 - 网页等资源被临时转移到其它URL
404 - 请求的资源(网页等)不存在
500 - 内部服务器错误
- HTTP状态码分类
HTTP大致分类 | 对应的描述 |
---|---|
1xx | 信息报告,服务器收到请求,需要请求者继续执行操作 |
2xx | 请求成功,操作被成功接收并处理 |
3xx | 请求路径重定向,需要进一步的操作以完成请求 |
4xx | 客户端(游览器)错误,请求包含语法错误或无法完成请求 |
5xx | 服务器错误,服务器在处理请求的过程中发生了错误 |
- HTTP状态码列表:
状态码 | 状态码英文名称 | 中文描述 |
---|---|---|
100 | Continue | 继续。客户端应继续其请求 |
101 | Switching Protocols | 切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到HTTP的新版本协议 |
200 | OK | 请求成功。一般用于GET与POST请求 |
201 | Created | 已创建。成功请求并创建了新的资源 |
300 | Multiple Choices | 多种选择。请求的资源可包括多个位置,相应可返回一个资源特征与地址的列表用于用户终端(例如:浏览器)选择 |
301 | Moved Permanently | 永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替 |
302 | Found | 临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI |
306 | Unused | 已经被废弃的HTTP状态码 |
400 | Bad Request | 客户端请求的语法错误,服务器无法理解 |
404 | Not Found | 服务器无法根据客户端的请求找到资源(网页)。 |
500 | Internal Server Error | 服务器内部错误,无法完成请求 |
505 | HTTP Version not supported | 服务器不支持请求的HTTP协议的版本,无法完成处理 |