网络系列之GET与POST请求方式的区别

Posted yanggeng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络系列之GET与POST请求方式的区别相关的知识,希望对你有一定的参考价值。

作为一枚正在学习前端的 小萌新,如果下面哪里有写的不对的话,可以帮我指出来吗,谢谢

 

  1.是基于什么前提的?如果什么前提都没有,不使用任何规范,只考虑语法和理论上的HTTP协议

    那么GET和POST几乎没有什么区别,只有名字不一样而已。

  2.如果是基于RFC规范的。

    (1) 理论上的:GET和POST具有相同语法的,但是有不同的语义。 GET是用来获取数据的,POST是用来发送数据的,其他方面没有什么区别。

    (2) 实现上的:各种浏览器呢,就是实现RFC规范的实现者。

      2.1. GET的数据在URL是可见的。POST请求不显示在URL中。

      2.2. GET传输的数据,理论上是没有限制的,但是真正起到限制的浏览器对URL的长度进行的限制,

        IE:2083个字符  Firefox:65,536个字符  Safari:80,000个字符  Opera:190,000个字符  Google Chrome:8182个字符      

        对于 POST,由于不是 URL 传值,理论上是不会受限制的,但是实际上各个服务器会规定对 POST提交数据大小进行限制,Apache、IIS 都有各自的配置。

      2.3. GET请求的数据可以收藏为书签,POST请求到的数据不可以收藏为书签

      2.4. GET请求后,按后退按钮,刷新页面 无影响,但是POST数据会被重新提交。

      2.5. GET编码类型:application/x-www-form-url,  POST的编码类型:有很多种,例如有:

         1.application/x-www-form-urlencoded

        2.multipart/form-data

        3.application/json

        4.text/xml

      2.6. GET历史参数会被保留在浏览器里,POST不会保持在浏览器中

      2.7. GET只允许ASCII编码,POST没有编码限制

      2.8. GET比POST相对安全,对于小白来说,确实如此,毕竟GET 发生的数据都放在URL里面了。POST是放在数据体(Request)里面, 如果使用的是HTTP协议传输的话,其实他俩都是一样的,因为HTTP协议,传输的数据 都是明文的,所以,去网页输入账号密码的时候,记得看是HTTP,还是HTTPS的。s的比较安全。

 

  那,上面的呢,就是标准答案了。相信百度上,大多数都是跟这个类似的答案了。

在上面说到,在没有规范的前提下,他俩完全是没有区别的。都是基于HTTP协议,HTTP的底层是TCP/IP。所以GET和POST的底层也是TCP/IP,所以他们的底层一样,那么要怎么传数据,当然也可以设置成一样。技术上,是完全ojbk的。

 

GET和POST还有一个重大区别,简单的说:

GET只会产生一个TCP数据包;POST会产生两个TCP数据包。

通俗来说的话:

  GET请求,浏览器会把 请求头和 数据一起发送过去,服务器收到了,就返回数据。

  POST呢,他是先发送请求头,服务器返回状态码100,然后浏览器再发送数据过去,服务器收到了再返回数据和状态码200。

所以看到这里,有人可能会说,既然 POST发送两次包, GET只发送一次包,理论上是不是GET比较快? 那么我们是不是可以使用GET来代替POST请求?

  不行滴,因为GET 和 POST本来自身就有自己的用处,不能随便混用的。而且,在网络较好的环境下,其实他俩发送一次和两次包的时间,几乎是差不多的。而且对于5G时代来说,更是如此。最后,对

于包的完整,是不是使用POST更能保证他的完整性?

 

以上是关于网络系列之GET与POST请求方式的区别的主要内容,如果未能解决你的问题,请参考以下文章

简洁!get请求和post请求的区别——Web网络系列学习笔记

从零玩转JavaWeb系列7web服务器-----get与post的区别

HTTP请求方法中中GET和POST的区别(详细描述)

GET,POST两种请求方式的区别

HTTP 请求的 GET 与 POST 方式的区别

接口测试实战| GET/POST 请求区别详解