【每日一题】get和post的区别

共 1266字,需浏览 3分钟

 ·

2021-09-06 18:34

人生苦短,总需要一点仪式感。比如学前端~

get 和 post

  • get参数通过URL传递方式,post放在Request body中。
  • get请求会被浏览器主动缓存(cache,而post不会,除非手动设置。(缓存一般只适用于那些不会更新服务端数据的幂等请求。
  • get请求参数会被完整保留在浏览器历史记录里,而post中的参数不会被保留。
  • get请求中有非ASCII字符,会在请求之前进行转码,POST不用,因为post在Request body中,通过MIME,也就可以传输非ASCII字符。
  • 一般我们在浏览器输入一个网址访问网站都是get请求
  • HTTP的底层是TCP/IP。HTTP只是个行为准则,而TCP才是get和post怎么实现的基本。get/post都是TCP链接。get和post能做的事情是一样一样的。但是请求的数据量太大对浏览器和服务器都是很大负担。所以业界有了不成文规定,(大多数) 浏览器通常都会限制url长度在2K个字节,而(大多数)服务器最多处理64K大小的url。
  • get产生一个TCP数据包; post产生两个TCP数据包。对于get方式的请求,浏览器会把http header和data一并发送出去,服务器响应200 (返回数据) ;而对于post,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok (返回数据)
  • 在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视。而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点。但并不是所有浏览器都会在post中发送两次包,Firefox就只发送一次。

幂等(idempotent)

如果一个方法重复执行多次,产生的效果是一样的。我们就将其定义为幂等的。

比如:

  • get请求: 通常用于获取数据,执行多次和执行一次得到的结果一样(不考虑数据被其他入口改动)。
  • put请求:如果两个请求相同,后一个请求会把第一个请求覆盖掉。(所以PUT用来改资源)
  • post请求:后一个请求不会把第一个请求覆盖掉。(所以post用来增加资源)

END
愿你历尽千帆,归来仍是少年。


让我们一起携手同走前端路!

关注公众号回复【加群】即可

● 工作中常见页面布局的n种实现方法

● 三栏响应式布局(左右固宽中间自适应)的5种方法

● 两栏自适应布局的n种实现方法汇总

● 工作中常见的两栏布局案例及分析

● 垂直居中布局的一百种实现方式

● 常用九宫格布局的几大方法汇总

● 为什么操作DOM会影响WEB应用的性能?

● 移动端滚动穿透的6种解决方案

● Vue + TypeScript 踩坑总结

浏览 32
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报