一、几个概念
- 前端:即浏览器端
- 客户端:凡是能和服务器通信的就叫做客户端,如:浏览器、命令行工具
- 后端:即服务器端
二、 http报文
1. 是什么
- 请求报文:浏览器向服务器发送请求时的请求信息,就是请求报文
- 响应报文:服务器向浏览器发送响应时传输的信息,就是响应报文
2. 报文格式
-
请求:请求头(起始行+首部) + 请求体
-
响应:响应头(起始行+首部) + 响应体
get请求没有请求体,数据是通过请求头携带的
post请求有请求体,数据通过请求体携带
2.1 常见的 request headers
属性 | 说明 |
---|---|
Accept | 浏览器可接收的数据格式 |
Accept-Encoding | 浏览器可接收的压缩算法 |
Accept-Language | 浏览器可接收的语言 |
Connection | keep-alive, 一次TCP链接重复使用 |
Host | 请求的域名 |
User-Agent | 浏览器信息 |
Content-type | 发送数据的格式,常见于post请求中,如 application/json |
2.1 常见的 response headers
属性 | 说明 |
---|---|
Content-Type | 返回的数据格式 |
Content-length | 返回数据的大小,多少字节 |
Content-Encoding | 返回数据的压缩算法 |
Set-Cookie | 服务器修改的cookie |
三、http方法
常用的http方法(请求时采用的方法,和响应无关)
- get:获取数据
- post:创建数据
- put / patch:更新数据
- delete:删除数据
四、 get和post的区别
-
语义:get用于获取数据,post用于创建数据
-
发送数据
get请求:通过地址 在请求头中携带数据,能携带的数据一般很小(和地址长度相关)
post请求:既可以通过地址在请求头中携带数据,也可以通过请求体携带数据。能携带的数据理论上是无限的
携带少量数据可以使用get请求,携带大量数据可以使用post请求 -
缓存
get 可以被缓存,因为get是通过地址携带数据的
post 不可以被缓存 -
安全性
get请求的数据在地址栏可以看见,但post的也可以在控制台看见,所以get和post都不安全
发送密码或其他敏感信息是不要使用get,这样可以避免直接被他人看见或者通过历史记录(get有缓存)找到
五、http状态码
分类 | 说明 |
---|---|
1xx | 信息,请求已经被接受,需要请求者继续执行操作,常见于:websocket |
2xx | 成功,操作被成功接收并处理 |
3xx | 重定向,需要进一步的操作以完成请求 |
4xx | 请求错误 / 客户端错误,请求包含语法错误或无法完成请求 |
5xx | 服务器错误 |
1. 常见的状态码
- 200,成功
- 301,永久重定向(配合location,浏览器自动处理),比如域名过期更换域名时
- 302,临时重定向(配合location,浏览器自动处理)
- 304,资源未被修改
- 404,资源没有找到
- 403,没有权限
- 500,服务器错误
- 504,网关超时