关于get和post的区别

get和post本质上没有区别,都只是http协议中的两种方式,用的都是同一个传输层协议,在传输上没什么不同。

什么是HTTP
超文本传输协议(HTTP)的设计目的是保证客户机与服务器之间的通信。

HTTP 的工作方式是客户机与服务器之间的请求-应答协议。

web 浏览器可能是客户端,而计算机上的网络应用程序也可能作为服务器端。

举例:客户端(浏览器)向服务器提交 HTTP 请求;服务器向客户端返回响应。响应包含关于请求的状态信息以及可能被请求的内容。

比较get和post,如图
在这里插入图片描述

1.get和post报文上的区别:

先下结论,GET 和 POST 方法没有实质区别,只是报文格式不同。

GET 和 POST 只是 HTTP 协议中两种请求方式,而 HTTP 协议是基于 TCP/IP 的应用层协议,无论 GET 还是 POST,用的都是同一个传输层协议,所以在传输上,没有区别。

报文格式上,不带参数时,最大的区别就是第一行方法名不同

POST方法请求报文第一行是这样的 POST /uri HTTP/1.1 \r\n

GET方法请求报文第一行是这样的 GET /uri HTTP/1.1 \r\n

是的,不带参数时他们的区别就仅仅是报文的前几个字符不同而已

带参数时报文的区别呢? 在约定中,GET 方法的参数应该放在 url 中,POST 方法参数应该放在 body 中
当然两种方法本质上都是TCP连接,没有差别,也就是说不按照规范来也是可以的。我们可以在url上写上参数,然后使用post方法,或者是在body中写上参数,使用get方法,当然这些需要服务端的支持。

2.get和post方法安全性上的差异

从网上大部分的解释来看,POST比GET安全,因为数据地址栏上看不见。
然而从传输的角度来说,他们都是不安全的,因为HTTP在网络上是明文传输的,只要在网络节点上捉包,就能完整的获取数据的请求报文。
想要安全传输,也就只有加密,也就是HTTPS。

3.get的长度有限制?最长为1024kb?

get方法提交参数的url数据没有大小限制
HTTP协议没有对url和body的长度限制,对url限制的大多是浏览器和服务器的缘故。
浏览器是浏览器厂商的设定。服务器是因为要处理长的URL需要消耗太多的资源,为了性能和安全,给url长度加以限制。

4.post方法会产生两个数据包?

有些观点中提出,post会将header和body分开发送,先发送header,服务器返回100后,在发送body。
HTTP协议中没有明确说明post会产生两个TCP数据包,而在实际测试中,header和body不会分开发送,
所以,header和body分开发送是部分浏览器或框架的请求方法,不属于post的必然行为。

5.get用于获取数据,post用于提交数据

虽然get的确常被用于获取数据,但post也可以在一些UI框架被用于取回数据。
get和post的用途也是因地制宜的,不是绝对的,要根据实际情况来决定用哪个方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值