首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

《网盾奇遇记》——区分HTTP协议中GET和POST

HTTP协议中的GET请求和POST请求一样吗?

对于这个问题,一千个人有一千个看法。就像我们在使用网盾高防产品的时候,不同规模的会选择不同的产品,有些人会用较贵的网盾高防IP或者高防CDN,有些人则会选用实惠的网盾高防服务器。

今天将着重为大家讲解一下两者的区别。

区分两者第一要素,就是掌握基于什么前提

我们用老盾的案例来讲~

老盾家住网盾村,盾嫂住在极风屯。老盾找盾嫂有多种选择,走着去、驾车去、坐火车去、坐飞机等等。老盾决定今天驾车去,还可以沿途看看风景。

网盾村和极风屯相当于互联网中的两个计算机,老盾和盾嫂相当于计算机中的两个程序。程序之间想要通信,有多种协议支持,就好比有多种交通方式,这里把自驾看作HTTP协议。

老盾很有钱,有一辆越野,还有一辆跑车(一般跑车都放在盾嫂家)。

两种车就好比是HTTP协议中的两种方式,越野是GET请求方式,跑车是POST请求方式。

有时候老盾把车开过来,回去就会坐车。

有一天老盾家有事,需要盾嫂过去帮忙。盾嫂决定开放在车库里的跑车。

盾嫂去找老盾,就好比程序A向程序B发出请求。理论上,两辆车都可以见到老盾。所以在本质上,GET请求和POST请求都可以获取数据,并做出反应。

这时候,盾嫂的父亲(隔壁老王)出来说:“你是不是傻,找老盾开越野不就好了吗,开超跑,路上那么颠簸,费油不说,磕磕碰碰你多心疼啊!”

既然GET和POST都可以拉取数据,那么为什么通常使用GET比POST更多呢?

在故事中,隔壁老王阻碍开超跑,那在现实中,是不是也有一个“隔壁老王”?

肯定是有的。“隔壁老王”就是ISO国际标准化组织,这样组织也有类似于老王的话,便是RFC规范。

GTE和POST请求的语法是完全相同的,HTTP协议实际上是基于RFC规范的,定义了GET和POST请求的语义,GET获取信息,POST发送信息。

过年过节的时候,老盾会给盾嫂送东西,盾嫂也会开着超跑去找老盾,当然了,老盾也会让盾嫂带礼物回来。

这就是RFC规范了,在互联网环境中,如果想要发送信息只能使用POST方法。

POST方法虽然是发送消息的,但也是有Response,请求完成返回的时候也可以带来一些数据。

那么问题来了?可以不听老王的话吗?老王还有其他备用方案吗?那就是在门口设置障碍。

软件实施光遵循规范是不够的,还需要遵从了RFC的规范,比如我们熟悉的Chrome浏览器。

因此日常想用GET方式发送文件或者图片是不可能的。

总结:

一、功能不同

1、GET是从服务器上获取数据。

2、POST是向服务器传送数据。

二、过程不同

1、GET是把参数数据对列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。

2、POST是通过HTTP POST机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。

三、获取值不同

1、对于GET方式,服务器端用Request.QueryString获取变量的值。

2、对于POST方式,服务器端用Request.Form获取提交的数据。

四、传送数据量不同

1、GET传送的数据量较小,不能大于2KB。

2、POST传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。

五、安全性不同

1、GET安全性非常低。

2、POST安全性较高。

如果没有加密,他们安全级别都是一样的,随便一个监听器都可以把所有的数据监听到。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20210121A0C77N00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券