GET 和 POST 的区别?

1. Get ⽅法的含义是请求从服务器获取资源,这个资源可以是静态的⽂本、⻚⾯、图⽚视频等。

⽐如,打开一篇的⽂章,浏览器就会发送 GET 请求给服务器,服务器就会返回⽂章的所有⽂字及资源。

POST ⽅法是向 URI 指定的资源提交数据,数据就放在报⽂的 body ⾥。

⽐如,在一篇⽂章底部,敲⼊了留⾔后点击「提交」,浏览器就会执⾏⼀次 POST 请求,把你的留⾔⽂字放进了报⽂ body ⾥,然后拼接好 POST 请求头,通过 TCP 协议发送给服务器。

2.  GET请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL和传输数据,参数之间以&相连,如:login.action?name=hyddd&password=idontknow&verify=%E4%BD%A0%E5%A5%BD。如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用BASE64加密,得出如:%E4%BD%A0%E5%A5%BD,其中%XX中的XX为该符号以16进制表示的ASCII

POST把提交的数据则放置在是HTTP包的包体中(request body)。

3.GET是通过URL提交数据,那么GET可提交的数据量就跟URL的长度有直接关系了。而实际上,URL不存在参数上限的问题,HTTP协议规范没有对URL长度进行限制。这个限制是特定的浏览器及服务器对它的限制IE对URL长度的限制是2083字节(2K+35)。对于其他浏览器,如Netscape、FireFox等,理论上没有长度限制,其限制取决于操作系统的支持。

POST是没有大小限制的HTTP协议规范也没有进行大小限制起限制作用的是服务器的处理程序的处理能力。

4. POST的安全性要比GET的安全性高比如通过GET提交数据,用户名和密码将明文出现在URL上因为(1)登录页面有可能被浏览器缓存,(2)其他人查看浏览器的历史纪录,那么别人就可以拿到你的账号和密码了,GET不能用来传递敏感信息除此之外,使用GET提交数据还可能会造成Cross-site request forgery攻击。post参数不会被保留

但是从攻击的角度,无论是GET还是POST都不够安全,因为HTTP本身是明文协议。每个HTTP请求和返回的每个byte都会在网络上明文传播,不管是url,header还是body。这完全不是一个“是否容易在浏览器地址栏上看到“的问题。

为了避免传输中数据被窃取,必须做从客户端到服务器的端端加密。通行做法就是https

5.对于GET方式的请求,浏览器会把HTTP headerdata一并发送出去,服务器响应200 ok (返回数据);而对于PosT,浏览器先发header,服务器响应100continue,浏览器再发送data,服务器响应200 ok〈返回数据)GET产生一个TCP数据包,POST产生两个TCP数据包.

6.GET的参数只能进行url编码,而POST能支持多种编码方式,包括中文。但其实从上面可以看到,GET和POST实际上都能用url和body。因此所谓编码确切地说应该是http中url用什么编码,body用什么编码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值