get
请注意,查询字符串(名称/值对)是在 GET 请求的 URL 中发送的
GET 请求可被缓存
GET 请求保留在浏览器历史记录中
GET 请求可被收藏为书签
GET 请求不应在处理敏感数据时使用
GET 请求有长度限制 ,大多数浏览器通常都会限制url长度在2K个字节
GET 请求只应当用于取回数据
只接受ASCII字符的参数的数据类型
get效率高
post
查询字符串(名称/值对)是在 POST 请求的 HTTP 消息主体中发送的
POST 请求不会被缓存
POST 请求不会保留在浏览器历史记录中
POST 不能被收藏为书签
POST 请求对数据长度没有要求
POST支持多种编码方式
为什么get比post效率高
**[最重要原因]**post在真正接受数据之前会先将请求头发送给服务器进行确认,然后才真正发送数据
post 请求过程
1.浏览器请求tcp连接(第一次握手)
2.服务器答应进行tcp连接(第二次握手)
3.浏览器确认,并发送post请求头(第三次握手,这个报文比较小,所以http会在此时进行第一次数据发送)
4.服务器返回100 continue响应
5.浏览器开始发送数据
6.服务器返回200 ok响应
get 请求过程
1.浏览器请求tcp连接(第一次握手)
2.服务器答应进行tcp连接(第二次握手)
3.浏览器确认,并发送get请求头和数据(第三次握手,这个报文比较小,所以http会在此时进行第一次数据发送)
4.服务器返回200 ok响应
get会将数据缓存起来,而post不会。
ps:chrome下和firefox下如果检测到get请求的是静态资源,则会缓存,如果是数据,则不缓存,但是IE这个傻X啥都会缓存起来
post请求包含更多的请求头
post不能进行管道化传输