基础理论-GET与POST的区别

212 阅读2分钟

微信图片_20210601124541.jpg

基础理论-GET与POST的区别

这是我参与更文挑战的第1天,活动详情查看: 更文挑战

当被问两者之间的区别时,我们要先考虑是基于什么前提?

  1. 如果什么前提都没有,不使用任何规范,只考虑语法和理论上的HTTP协议。
    那么GET和POST几乎没有什么区别,只有名字上不一样。
  2. 如果是基于RFC规范的。
    1. 理论上的(Specification):GET和POST具有相同语法的,但是有不同的语义。GET是用来获取数据的,POST是用来发送数据的,其他方面没有区别。
    2. 实现上的(Implementation):各种浏览器,就是这个规范实现者。基于这种实现上的,也就是基于各种浏览器的,才有我们所说的常见的那些不同。
      常见的那些不同:
      1. GET的数据在URL里是可见的。POST请求不显示URL。
      2. GET对长度是有限制的,POST长度是无限的。
      3. GET请求的数据可以收藏为书签,POST请求到的数据不可收藏为书签
      4. GET编码类型:application/x-www-form-url。POST的编码类型有很多种,常见的有:encodeapplication/x-www-form-urlencoded
        multipart/form-data
      5. GET请求后,按后退按钮、刷新按钮无影响,POST数据会重新提交。
      6. GET历史参数会被保留在浏览器里,POST不会保存在浏览器中的。
      7. GET只允许ASCII编码。POST没有编码限制,允许发二进制,所以POST能发文件。
      8. GET与POST相比,GET的安全性较差。因为GET所发的数据是URL的一部分。如果发送的是密码的话,密码会在url中给显示出来了,而且会保存在浏览器里面,这样会比较容易泄露,如果用POST发送的话,会相对于GET好一点,起码不会在浏览器保存,但是它在网络中也是明文的,所以如果想要发送密码的话尽量使用HTTPS协议。