GET和POST请求的区别

本文详细解释了HTTP协议中GET和POST的区别,包括它们的工作原理、数据传输方式及浏览器和服务器的处理方式。此外还介绍了这两种请求方法在实际应用中的特点。

Get是向服务器发索取数据的一种请求,而Post是向服务器提交数据的一种请求,在FORM(表单)中,Method默认为"GET",实质上,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参数,技术上是完全行得通的。

在万维网的世界中,把TCP比作汽车,我们用TCP来传输数据,它非常可靠,不会发生丢件或者少件的行为。但是如果路上跑的TCP汽车都看起来一模一样,那么这个世界则看起来就会是一片混乱。送紧急文件的汽车可能被满载货物的汽车拦堵在路上,整个交通一定会瘫痪。

因此为了避免这种情况的的发生,交通规则HTTP诞生了,HTTP为汽车运输设定了服务类别,例如GET,POST,PUT,DELETE等等。当执行GET请求时,HTTP就会给汽车运输贴上GET标签。要求把货物放在车顶上(URL)以方便记录。执行POST请求时,就在车上贴上POST标签,并把货物放在车厢内。

但是,我们只是看到HTTP对GET和POST参数的传递渠道提出了请求,那么关于参数大小的限制又是从哪里来的呢?

在万维网的世界中,还有另一个重要的角色:运输公司。不同的浏览器(发出HTTP请求)和不同的服务器(接收HTTP请求)是不同的运输公司。理论上,你可以无限的在车顶上堆积货物。但是运输公司同样明白,装货和卸货都会有很大的成本。他们会限制单次运输量来控制风险。数据量如果太大对浏览器和服务器都会是很大的负担。业界不成文的规定是,(不同的浏览器)会限制URL长度在2K个字节,而服务器最多处理64K大小的URL。超过的部分,恕不处理。

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

GET产生一个TCP数据包,POST产生两个TCP数据包。

复杂的说:

对于GET方式的请求,浏览器会把HTTP HEADER和DATA一并发送出去,服务器返回200(返回数据);

对于POST方式的请求,浏览器会先发送HEADER,服务器响应100 continue,浏览器再发送DATA,服务器返回200(返回数据)

也就是说,GET只需要汽车跑一趟就把货送到了,而POST则需要跑两趟。第一趟,先去和服务器打一个招呼,我要把数据传送过来了。第二趟,再把货送过去。

 

 

1)GET在浏览器回退时是无害的,POST会再次提交请求

2)GET产生的URL地址可以被bookmark,而POST不可以

3)GET请求会被浏览器主动cache,而POST不会,除非手动设置。

4)GET请求只能进行url编码,而POST支持多种编码

5)GET请求参数会被完整保留在浏览器记录里,而POST中的参数则不会被保留

6)对参数的数据类型,GET只接受ASCII字符,而POST没有限制。

7)GET参数通过URL传递,POST放在request body中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值