**GET和POST的区别**

本文介绍了HTTP协议中GET和POST的区别。GET用于请求网页资源,是幂等且安全的,不会更改网络资源,但提交的数据不安全,放在URL里有长度限制;POST用于获取资源,是非幂等且不安全的,每次提交会修改网站资源,数据放在报文体中,请求数据不会被浏览器记录。

一般在HTTP协议规定GET用来请求网页资源,POST用来获取资源,GET获取网页资源是安全的因为它不会更改网络资源所以GET是幂等,这里说的安全就是GET操作只会获取网络资源并不会修改网络资源!
下面从几个方面来分别说明GET和POST的区别:
幂等
幂等是计算机学中的概念,所谓的幂等意思就是其任意执行多少次产生的影响都与第一次所产生的影响相同,就拿最简单的写博客来说吧,现在在这里我正在写一篇博客第一次写的时候文章内容如:123 后保存并发布到csdn上去了,第二次的内容是:456 同样也保存到csdn上去了,无论写多少次博客更改的仅仅是内容其结果都与第一次写博客一样发布到csdn上去,这就是幂等!
相反POST就属于非幂等且不安全的操作,因为PSOT每次提交数据都会修改网站资源导致每次返回结果不同,所以这样的操作是不安全的也不是幂等的!
安全性
1、GET
GET提交的数据是不安全的,因为GET提交的数据是放在URL里所以如果你的浏览器没有开启无痕模式就会被记录到浏览器历史记录里,这样你的账号密码很容易被他人所查看,不过很多网站使用GET提交敏感类信息时都对其数据进行了加密,不过这样做会降低网页响应速度因为计算需要用到CPU ALU运算单元会占用额外的系统资源,和运算时间,且因为GET提交数据是放到URL里的而URL长度是有限制的,虽然HTTP协议规范里并没有对URL长度做限制,但浏览器/服务器为了方便处理URL会对其做限制。
2、POST
POST发送数据时数据是放在报文体中的,不会显示到URL中所以POST所请求的数据不会被浏览器所记录,一般在使用POST时可以发送两次数据,例如在HTTP协议头中加入”Expect:100-continue”发送过去询问服务器是否可以继续发送后续数据,如果服务器收到带有“Expect:100-continue”报文请求后如果支持的话会返回100不支持则不响应或者返回错误状态码,如果支持的话客户端可以在后续持续发送POST数据(这种方法仅用于POST因为GET发送数据是存在于HTTP报文头处的)这种情况下一般用在POST数据比较大的情况下才会在报文头处添加“Expect:100-continu”属性,虽然说HTTP规范没有对GET和POST发送长度做限制但是浏览器/服务器考虑到一次传输的内存开销(越大的数据就需要越大的内存来存储)还有服务器一次处理数据的能力所以对POST也做了限制,不过限制没有GET那样苛刻

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值