本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点
Http基础
get和post的区别
1、 GET把参数包含在URL中,POST通过request body传递参数
2、 get比post更快。原因:
- 因为post请求包含更多的请求头
- post在真正接收数据之前会先将请求头发送给服务器进行确认,然后才真正发送数据
3、 get会将数据缓存起来,而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的2/3左右,这个口说无凭,网上已经有网友进行过测试。
面试是一般怎么回答get和post的区别
(1)post更安全(不会作为url的一部分,不会被缓存、保存在服务器日志、以及浏览器浏览记录中)
(2)post发送的数据更大(get有url长度限制)
(3)post能发送更多的数据类型(get只能发送ASCII字符)
(4)post比get慢
(5)post用于修改和写入数据,get一般用于搜索排序和筛选之类的操作(淘宝,支付宝的搜索查询都是get提交),目的是资源的获取,读取数据
Http 1.0的特点
1) HTTP 1.0是HTTP协议的第二个版本在1996年发布,如今仍然被广泛使用,尤其是在代理服务器中。
2) 1.0版本不仅仅支持GET命令还有POST和HEAD等请求方法。
3) HTTP的请求和回应格式也发生了变化,除了要传输的数据之外,每次通信都包含头信息,用来描述一些信息。
4) 不再局限于0.9版本的HTML格式,根据Content-Type可以支持多种数据格式,这使得互联网不仅仅可以用来传输文字,还可以传输图像、音频、视频等二进制文件。
5) 同时也开始支持cache,就是当客户端在规定时间内访问统一网站,直接访问cache即可。
6) 除了数据部分,每次通信都必须包括头信息(HTTP header)。
7) 其他的新增功能还包括状态码(status code)、多字符集支持、多部分发送(multi-part type)、权限(authorization)、缓存(cache)、内容编码(content encoding)等。
8) 但是1.0版本的工作方式是每次TCP连接只能发送一个请求,当服务器响应后就会关闭这次连接,下一个请求需要再次建立TCP连接,就是不支持 keep-alive。 TCP连接的建立成本很高,因为需要客户端和服务器三次握手,并且开始时发送速率较慢(slow start)。所以,HTTP 1.0版本的性能比较差。随着网页加载的外部资源越来越多,这个问题就愈发突出了。为了解决这个问题,有些浏览器在请求时,用了一个非标准的Connection字段。
欢迎关注我的公众号AntDream查看更多精彩文章!