HTTP
概述
- Hyper Text Transfer Protocol :超文本传输协议
特点:
- 基于TCP/IP的高级协议
- 默认端口号:80
- 基于请求/响应模型:一次请求对应一次响应
- 无状态:每次请求之间相互独立,不能交互数据
历史版本
1.0 :每次请求都会建立新的连接
1.1 :可以复用连接
请求消息数据格式
请求行
- 格式:
请求方式 请求url 请求协议/版本
请求方式:共7种
GET
- 请求参数在请求行中,(在url后)
- 请求的url长度有限制
- 安全性低
POST
- 请求参数在请求体中。
- 请求的url长度没有限制
- 相对安全
- 格式:
请求头
客户端浏览器告诉服务器的一些信息
格式:
请求头名称 : 请求头值1,请求头值2...
常见请求头:
User-Agent
:浏览器版本信息,可以在服务器端获取该头的信息,解决浏览器的兼容性问题Referer
:包含了当前请求页面的来源页面的地址,即表示当前页面是通过此来源页面里的链接进入的。服务端一般使用 Referer 请求头识别访问来源,可能会以此进行统计分析、日志记录以及缓存优化等。
请求空行
- 空行:用于分割POST请求的请求头和请求体
请求体(正文)
- 封装POST请求消息的请求参数
响应消息数据格式
响应行
- 格式:
协议/版本 响应状态码 状态码描述
响应状态码:服务器高速客户端浏览器本次请求和响应的一个状态
1xx
:服务器接收客户端消息,但没有接收完成,等待一段时间后,发送1xx状态码2xx
:成功。2003xx
:重定向。- 302:重定向
- 304:访问缓存
4xx
:客户端错误。- 404:请求路径没有对应的资源
- 405:请求方式没有对应的doXXX方法
5xx
:服务器错误。500(服务器内部异常)
- 格式:
响应头
- 格式:
头名称:值
常见的响应头:
Content-Type
:服务器高速客户端本次响应体数据格式以及编码格式Content-disposition
:服务器告诉客户端以什么样的格式打开响应体数据in-line
:默认值,在当前页眉内打开attachment;filename=xxx
:以附件形式打开响应体。(文件下载)
- 格式:
响应空行:分隔响应头和响应体
响应体:传输的数据