HTTP中GET和POST的区别

从学习编程开始,关于get请求和post请求的问题就一直困扰着我。今天就简单说说两者的区别。

先来看看HTTP是什么?

HTTP:

HTTP协议:(HyperText Transfer Protocol超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,所有的www文件都必须遵守的标准。是基于TCP/IP的关于数据在万维网中如何通讯的协议。

HTTP总共有8中请求方法,我们最常见也是最常用到的就是GET和POST请求。现在就简单说说GET和POST请求的区别:

GET和POST

在这里插入图片描述这是W3C官网上对于GET和POST区别的总结,但是他们并没有说明为什么会有这种区别,所有就导致了我们对于GET和POST的区别还是一脸懵。今天就谈谈为什么会有这种区别。以便大家对他们两者的区别有更加深刻的印象:

1.

一般来说GET是获取数据,POST是提交数据的。但是因为GET和POST都是HTTP的方法,HTTP又是是基于TCP/IP的关于数据在万维网中 如何让通讯的协议。所以本质上来说GET和POST请求是没有区别 的,都是TCP链接。他们能做的事情是一样的。

HTTP协议既然有了这两个方法,就是为了在特定的情况下区分应用。就有了我们所说的GET是获取数据,POST是提交数据的。

2.

GET传输数据的时候是在URL地址中的、对所有人都是是可见的、是不安全的、是有浏览器缓存记录的。所以说GET是不安全的,发送密码等数据的时候不要用GET传输。

GET只能传输ASCLL字符,不能进行编码。

POST传输的时候是放在HTTP的请求体之中的,并且是经过urlencode编码的所以是相对安全的。

POST是没有对数据类型的限制的,二进制数据也是可以的。

3.

HTTP协议并没有对GET和POST的长度做限制,其实是浏览器限制了他们传输大小。

URL地址是有长度限制的,浏览器不同长度限制的具体数值也是不一样的。比如IE是2083字节。需要注意的是这些仅仅是URL地址栏的长度限制。

理论上来说POST的长度是没有限制的,但是受服务器的配置限制或者内存大小的限制,造成了实际开发中POST也是有数据长度的限制的。可以在PHP下修改php.conf中的postmaxsize值来设置POST的大小。

4.

为什么说GET比POST更快?

有一个原因是POST需要在请求的body部分包含数据,所以会多了几个描述部分的首部字段比如:content-type,但这是微乎其微的,可以忽略不计。

另外一种愿意是POST和GET请求的过程是不一样的
POST请求的过程:先进行3次握手,然后服务器返回100continue响应,浏览器再次发送数据,服务器返回200成功响应。
GET请求的过程:也是先进性3次握手,然后服务器返回成功响应。
也就是说POST是要比GET多进行一次数据传输的,所以GET请求就比POST请求更快。
但是在现在服务器配置较高和网速较快的情况下,这多出来的一次数据传输在实际中并没有什么影响。

5.

因为GET是获取数据,所以GET请求是安全且幂等的,是无害的。这个安全指得是对数据不会造成影响。幂等简单的来说就是无论获取多少次数据得到的资源都是一样的。

POST是向服务器传输数据,数据会被重新提交,所以就会有对原有的数据造成伤害。

以上就是我总结的关于POST和GET的区别,如果有错误请指正。

  • 20
    点赞
  • 71
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论

打赏作者

不想就是不想(* ̄m ̄)

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值