post和get
相同点:请求底层都是基于 TCP/IP 协议实现的
不同点:
1.在规范中,定义 GET 请求是用来获取资源的,也就是进行查询操作的,而 POST 请求是用来传输实体对象的,因此会使用 POST 来进行添加、修改和删除等操作。
2.GET 和 POST 的参数传递也是不同的,GET 请求是将参数拼加到 URL 上进行参数传递的,而 POST 是将请参数写入到请求正文中传递的
3.GET 请求一般会被缓存,比如常见的 CSS、JS、HTML 请求等都会被缓存;而 POST 请求默认是不进行缓存的。
这里是数据会被前端缓存,当浏览器发了一条请求,会返回数据,浏览器会把返回的数据记录下来 当你再次发送该请求的时候,浏览器并不真的再发送这条请求,而是从历史记录里把这个数据读取取出来,这叫做缓存。这是浏览器自己的决策,后端并不知道也没有收到任何请求。 防止浏览器缓存的方法是添加http头,告诉浏览器不要缓存数据,或是给一个校验。。。。等等 但是更靠谱的方法是每次都让get的数据不一样:
GET http://localhost/api?_t=时间戳
添加一个后端直接忽略的参数,然后每次都不一样,这样浏览器就认为每次都是不同的请求,就不会从历史记录里读取数据了。
图片来自:https://segmentfault.com/q/1010000021784624/a-1020000021785282
4.GET 请求的参数是通过 URL 传递的,而 URL 的长度是有限制的,通常为 2k,当然浏览器厂商不同、版本不同这个限制的大小值可能也不同,但相同的是它们都会对 URL 的大小进行限制;而 POST 请求参数是存放在请求正文(request body)中的,所以没有大小限制。(原因是不同的浏览器,而不是一个在请求头一个在请求体中,http没有对他们进行限制)
5.GET 请求可以直接进行回退和刷新,不会对用户和程序产生任何影响;而 POST 请求如果直接回滚和刷新将会把数据再次提交
6.GET 请求的参数会保存在历史记录中,而 POST 请求的参数不会保留到历史记录中。
7.GET 请求的地址可被收藏为书签,而 POST 请求的地址不能被收藏为书签。
修改自:https://www.cnblogs.com/vipstone/p/16545771.html