首先说明参考链接:https://mp.weixin.qq.com/s/W68JzNIoUpm9hyXinOzkMw

以下为个人观后总结。

初级理解:

GET和POST的区别

1、get传送的参数长度有限制,post没有
2、get"不安全",显示在url上,post没有
3、get会被主动缓存,post没有
4、get只接受ASCII字符,post没有限制
5、get在浏览器回退时无害,post会再次发送请求
6、get请求会被完成保存在浏览器缓存中,post没有
7、get只支持url编码,post支持多种
8、传输数据方式不同,get请求时发送一个请求包,post请求时发送两个请求包。

问题来了,get请求有request body吗?

首先说明,get和post都是http请求,底层都是tcp协议,区别在哪呢?
为了区分也为了更方便处理,将tcp进行了分类,分类get和post等请求,每个请求对应自己的的处理方式,
如果把tcp比喻成汽车,get就是货车,那种敞篷的大货车,拉的什么货物,一目了然。
post就是封闭式的搬家面包车,所有的东西都藏在里面,只有开门卸货才能知道装了什么。

但是,敞篷大货车前面的驾驶室也可以放置一些小的货物,至于买家要不要就是人家的事了。
搬家面包车也能够在车顶放上一个自行车,但是敢不敢放那就是车主人的问题了。

每次运送货物时理论上可以无限装载,比如印度的火车,你懂得,车里面满了,那就上车顶,车顶满了,那就挂车外面,挤就完了,但是这很危险啊。url参数也是,正常可以无限续接,但是为了提高卸货装货的效率,浏览器最终指定了一个不成文的规则,url长度在2k,
服务器最多处理64k大小的url。

结论,get可以有request body,主要看浏览器支不支持解析了。

url参数是如何拼接的呢?

使用“?”添加参数,“&”分隔参数
其实我们可以自己定义参数的写法,只要服务器段能够解析出来即可。

get比post安全吗?

不安全,get和post都是http请求,都是明文传输的,通过网络抓包都能够进行获取。
想要安全那就需要https请求。

get和post是如何发送请求的?

get发送请求时,只会发送一个请求包
post发送请求时,会发送两个请求包,首先发送一个请求包,告诉服务器,我接下来要发送一个请求了,得到服务器的答复之后,在发送请求包。

get比post更快吗?

并不会,在网络良好的情况下,发两次包和发一次包所用时间几乎一致,而且并不是所有浏览器,post都是两次发送请求。火狐和谷歌基本都是发送一次。

最新文章

  1. 【算法】PHP实现冒泡排序和快速排序--防遗忘
  2. jquery笔记(遍历)
  3. firemonkey中stringgrid属性大全
  4. 一只小蜜蜂...[HDU2044]
  5. 20169210《Linux内核原理与分析》第四周作业
  6. TSF自定义候选词列表界面
  7. [置顶] js综合应用:表格的四则运算
  8. Android L动画入门
  9. 虚拟WiFi
  10. openssh6.7.deb download packed for debian7/ubuntu12.04 amd64
  11. JSP基本语法--实例演练
  12. linux读书笔记1
  13. 乐字节-Java8新特性之Date API
  14. Ubuntu 安装google chrome
  15. SolidWorks知识积累系列-01
  16. 流程控制之if...else
  17. IOS初级:NSKeyedArchiver
  18. Intermediate Python for Data Science learning 1 - Basic plots with matplotlib
  19. DB2分页查询SQL
  20. SQL Server 跨服务器快速数据转移

热门文章

  1. 达梦数据库产品支持技术学习分享_Week2
  2. Python+Selenium学习笔记7 - os模块
  3. PointRCNN: 点云的3D目标生成与检测
  4. ITS智能交通监控系统技术解析
  5. python小知识,sort和serted的区别
  6. Django OperationalError错误解决
  7. 盘点用jQuery框架实现“for循环”的四种方式!
  8. 06:Database returned an invalid datetime value. Are time zone definitions for your database installed?
  9. 循序渐进BootstrapVue,开发公司门户网站(3)--- 结合邮件发送,收集用户反馈信息
  10. 创建react项目并集成eslint/prettier/commit-lint