网络系列之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网络系列学习笔记