详解GET与POST

GET和POST是什么?HTTP协议中的两种发送请求的方法。
HTTP是什么?HTTP是基于TCP/IP的关于数据如何在万维网中如何通信的协议。
HTTP的底层是TCP/IP。所以GET和POST的底层也是TCP/IP,也就是说,GET/POST都是TCP链接。GET和POST能做的事情是一样一样的。你要给GET加上request body,给POST带上url参数,技术上是完全行的通的。
GET和POST本质上就是TCP链接,并无差别。但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。

一、get和post区别

  • 1.url可见性
    get传参方式是通过地址栏URL传递,是可以直接看到get传递的参数,post传参方式参数URL不可见,get把请求的数据在URL后通过?连接,通过&进行参数分割。psot将从参数存放在HTTP的包体内
  • 2.传输数据大小
    get传递数据是通过URL进行传递,对传递的数据长度是受到URL大小的限制,URL最大长度是2048个字符。post没有长度限制
  • 3.后退页面
    get后退不会有影响,post后退会重新进行提交
  • 4.缓存
    get请求可以被缓存,post不可以被缓存
  • 5.编码方式
    get请求只支持URL编码,post支持多种编码方式
  • 6.历史记录
    get请求的记录会留在历史记录中,post请求不会留在历史记录
  • 7 字符类型
    get只支持ASCII字符,post没有字符类型限制
  • 8.数据传送渠道
    GET参数通过URL传递,POST放在Request body中。

二、post相比较get传参方式的优点

  • 1.安全性比get传参方式好:
        a.存在于HTTP包中,一般不会直接被查找到
        b.post不会被浏览器进行缓存
        c.不会留在历史记录中
      (并不代表post一定安全,因为在HTTP下都是明文传输,post仍然可以被查找到,增加安全性最好使用https协议)
  • 2.post没有字符和编码的限制,能发送的数据类型更多
  • 3.post传送数据没有大小限制,比get可以发送的更多的数据
      post的缺点:速度比get传输慢,get的效率更高

三、为什么get的效率比post高

  • 1.post请求数据会先将请求头发送给服务器确认,然后才真正的发送数据,(相当于第一次先向服务器打个招呼,第二次才将数据真正的发过来,get则是直接发送数据。专业的说法是,get产生一个TCP数据包,post产生两个TCP数据包但并不是所有的浏览器post都会请求两次,火狐浏览器就会请求一次)总结起来就是请求的过程比get更多
  • 2.get会将数据进行缓存
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容