1. 简介
- 概念:HyperText Transfer Protocol,超文本传输协议,规定了浏览器和服务器之间数据传输的规则。
- 学习HTTP主要就是学习请求和响应数据的具体格式内容。
HTTP协议特点
- 基于TCP协议: 面向连接,安全
TCP是一种面向连接的(建立连接之前是需要经过三次握手)、可靠的、基于字节流的传输层通信协议,在数据传输方面更安全。 - 基于请求-响应模型的:一次请求对应一次响应
请求和响应是一一对应关系 - HTTP协议是无状态协议:对于事物处理没有记忆能力。每次请求-响应都是独立的
无状态指的是客户端发送HTTP请求给服务端之后,服务端根据请求响应数据,响应完后,不会记录任何信息。这种特性有优点也有缺点,- 缺点:多次请求间不能共享数据(Java提出了使用
会话技术(Cookie、Session)
来解决这个问题) - 优点:速度快
- 缺点:多次请求间不能共享数据(Java提出了使用
2. 请求数据格式
请求数据总共分为三部分内容,分别是请求行、请求头、请求体
-
请求行: HTTP请求中的第一行数据,请求行包含三块内容,分别是 GET表示请求方式,/表示请求URL路径,HTTP/1.1表示HTTP协议及版本
请求方式有七种,最常用的是GET和POST -
请求头: 第二行开始,格式为key: value形式
请求头中会包含若干个属性,常见的HTTP请求头有:
-
请求体: POST请求的最后一部分,存储请求参数
如上图红线框的内容就是请求体的内容,请求体和请求头之间是有一个空行隔开。此时浏览器发送的是POST请求,为什么不能使用GET呢?这时就需要回顾GET和POST两个请求之间的区别了:
GET请求请求参数在请求行中,没有请求体,POST请求请求参数在请求体中
GET请求请求参数大小有限制,POST没有
3. 响应数据格式
3.1 格式
响应数据总共分为三部分内容,分别是响应行、响应头、响应体
-
响应行:响应数据的第一行,响应行包含三块内容,分别是 HTTP/1.1表示HTTP协议及版本, 200表示响应状态码,ok表示状态码的描述
-
响应头:第二行开始,格式为key:value形式
响应头中会包含若干个属性,常见的HTTP响应头有:Content-Type:表示该响应内容的类型,例如text/html,image/jpeg; Content-Length:表示该响应内容的长度(字节数); Content-Encoding:表示该响应压缩算法,例如gzip; Cache-Control:指示客户端应如何缓存,例如max-age=300表示可以最多缓存300秒
-
响应体: 最后一部分。存放响应数据
上图中<html>…</html>这部分内容就是响应体,它和响应头之间有一个空行隔开。
3.2 响应状态码
- 200 ok 客户端请求成功
- 404 Not Found 请求资源不存在
- 500 Internal Server Error 服务端发生不可预期的错误