get与post区别

GET与POST的区别这个问题因为在很多面试题都出现过,所以上网搜索答案,可以发现一大堆,大多数答案看起来都大同小异,但没有一个标准的答案,都是各自对GET与POST的理解,因此,我也根据自己的理解,说明GET与POST的异同。

    GET与POST都是HTTP协议(HTTP协议详解)中的请求方式,而HTTP是基于TCP/IP协议进行数据传输,所以从本质上这两种请求方式并无区别,但是,如果HTTP协议中一个请求方式可以完美完成任务,那我想就没有这个问题存在了,但既然会设计出来不同的方式,那肯定是对应要解决一些问题。以下展开。
  1. 安全问题

网上的答案都有一条区别说明:GET请求时传输数据是通过URL携带参数传播,而POST是通过HTTP的header数据包传输的数据。

我们知道,在互联网世界中,用技术的角度审视,无非就是“增删改查”,而互联网产品,最重要的就是数据库信息,如果仅仅是查询数据库信息,通过GET传参倒也没什么,只是对非法分子扒数据方便一些,但是如果用GET传参进行“增删改”数据操作,那严重的问题就出来了,数据安全怎么办?
比如用户登录请求:www.example.com?name=test&password=123

用户的密码直接显示出来,这能行

再有,如果通过get传参去修改数据,那稍微懂点相关语言知识的人都可以随便更改URL中的参数,那数据库是什么后果,想想都

所以,在HTTP规范中,GET请求方式用于信息获取,并且同一URL通过GET获取的页面信息应该永远相同。
2.  传输数据大小限制问题

网上的答案也有这条:GET请求时的参数大小需要控制在2KB以内,POST请求时对参数大小没有限制。

然而,在Http1.1协议中并没有提出针对URL的长度限制,RFC 协议里面是这样描述的,HTTP协议并不对 URI 的长度做任何的限制,服务器端 必须能够处理任何它们所提供服务都能接受的 URI,并且能够处理无限长度的 URI,如果服务器不能处理过长的URI,那么应该返回414状态码。

可是虽然Http协议规定了,但是各个浏览器为了保护自己的运行资源空间,还是对URI设置了自己的长度限制。所以依赖URL传参的GET请求方式所传输的参数大小也会有一定的限制。以下是个各浏览器URI大小限制表。

Microsoft Internet Explorer (Browser) IE 浏览器对URL的最大限制为2083个字符,如果超过这个数字,提交按钮没有任何反应。
Firefox (Browser) 对于Firefox浏览器URL的长度限制为65,536个字符。
Safari (Browser) URL最大长度限制为 80,000个字符。
Opera (Browser) URL最大长度限制为190,000个字符。
Google (chrome) URL最大长度限制为8182个字符。
Apache (Server) 能接受最大url长度为8,192个字符。
Microsoft Internet Information Server(IIS) 能接受最大url的长度为16,384个字符。
IE 11 能接受最大url的长度为2,047个字符。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值