HTTP
1、简介
HTTP
的全称是Hyper Text Transfer Protocol
,即超文本传输协议。它定义了浏览器
和服务器
通信时发送数据的格式。
如上图所示,浏览器发送请求到服务器,服务器处理完成之后发送回应给浏览器。请求和响应是成对出现的,是一对一的关系。
HTTP
有以下四个特点:
- 它是基于
TCP/IP
体系的,具有安全、可靠的特点 HTTP
的默认端口是80
- 基于请求、响应模型的
- 它是无状态协议,每次请求相互独立,不能交互数据
2、请求
HTTP
规定的请求数据格式有:请求行、请求头、请求空行和请求体。以下分别介绍。
1)请求行
请求方式有如下格式:
请求方式 请求URL 请求协议/版本
比如:
GET http:localhost/login.html HTTP/1.1
HTTP
的请求方式有七种,最常用的是GET
和POST
GET
请求方式有以下特点:
- 请求参数在请求行后,也就是说在
url
后 - 请求的
url
长度有限 get
相对于post
来说,它不太安全,因为传输的数据在url
中
POST
请求方式有以下特点:
- 请求参数在
请求体
中 url
长度无限制POST
比较安全,因为传输的数据在请求体中(其实点开F12
都能看见)
2)请求头
请求头是以键值对
的形式出现的:请求头名称:请求头值
常见的请求头如下表所示:
请求头 | 解释 |
---|---|
HOST | 代表主机 |
User-Agent | 浏览器告诉服务器,当前浏览器的版本信息 主要解决浏览器间的兼容问题 |
Accept | 告诉服务器,接收响应的数据格式 |
Accept-Language | 浏览器所支持的语言环境 |
Accept-Encoding | 压缩格式 |
Connetion | 数据通路是否一直激活 |
Referer | 告诉服务器,当前请求从哪里来? |
Referer
的作用有防盗链
、做统计工作
3)请求空行
就是一个空行,用来分隔请求头和请求体
4)请求体(正文)
请求体又叫请求正文,这个部分用来封装POST
请求的消息
3、响应
HTTP
规定的响应数据有响应行、响应头、响应空行、响应体(正文)
1)响应行
响应行的格式是这样的:
协议/版本 响应状态码 状态码描述
比如:
HTTP/1.1 200 OK
响应状态码:服务器告诉客户端浏览器本次请求和响应的一个状态。状态码都是3位数,分别有以下五类:
1xx
:表示服务器没有完全接收
到来自客户端的信息,等待一段时间后,发送1xx
2xx
:表示成功,代表状态码有200
3xx
:重定向,代表状态码有302
(重定向)、304
(访问缓存)4xx
:客户端错误,代表有404
表示路径没有对应的资源,405
请求方式没有对应的doxxxx
方法5xx
:服务器错误,代表有500
服务器内部出现异常
2)响应头
他的格式也是键值对
的方式,格式是头名称:值
常见的响应头有:
Content-Type
:服务器告诉客户端本次响应体的数据格式以及编码格式Content-disposition
:服务器告诉客户端以什么格式打开响应体数据
值有:in-line
:默认值,在当前页面打开;attachment
表示以附件的形式打开响应体,一般用于下载
3)响应空行
就是一个空行,用来分隔响应头和响应体
4)响应体(正文)
响应体又叫响应正文,这个部分用来传输真实数据