web笔记三:Http协议中get和post请求

get和post是HTTP协议中两种不同的请求方式。
get和post的区别可以大致分为两种,一种是请求格式,一种是弱规定(暂且这么称呼吧)。

首先是请求格式,get请求会将参数以?key1=value1&key2=value2的形式拼接到url后面,开头是一个问号(?),多个参数用符号(&)来连接。post请求的参数则会隐藏在请求体中,多个参数连接和get一样,只是开头比get少一个问号(?)。

Get请求:

GET /login?user=hxl&passwd=abc123 HTTP/1.1  
Host: 127.0.0.1:8080  
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0  
Accept: */*  
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3  
Accept-Encoding: gzip, deflate  
Origin: null  
Connection: keep-alive  

Post请求:

POST /login HTTP/1.1  
Host: 127.0.0.1:8080  
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0  
Accept: */*  
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3  
Accept-Encoding: gzip, deflate  
Content-Type: application/x-www-form-urlencoded; charset=UTF-8  
Content-Length: 22  
Origin: null  
Connection: keep-alive  

user=hxl&passwd=abc123  

那么,由此带来什么问题呢?
首先,get请求将参数拼接到url后面,会直接显示在浏览器上面,因此,有可能有一些敏感的数据会暴露出来,所以相对于post来说,这是不安全的。但是也带来了一个好处,也就是可以作为书签收藏。其次,get请求的url是有字符限制的,这个取决于服务器,通常来说是1024个字节,而post没有,所以如果要传输一个大字符的参数,比如图片的字节码,应该选用post。

接下来说一下弱规定,http协议中规定,get请求是幂等的,而post请求是非幂等的。幂等这个概念讲清楚还挺烦的,我们可以把它转化为List类来理解,幂等操作就相当于是类属性的get方法,无论调用多少次,只要参数index一致,总是能get到一个相同的值。非幂等操作就相当于add方法,虽然每次调用都是add同一个值,但是List的size会随着调用次数的增加而增加。所以,post要保持幂等性,必须做出重复判断。当然,规定是这么规定,程序怎么写还是掌握在我们手中,比如在get请求中写一个add操作……当然,最好不要这么做

所以,弱规定中就规定了,get请求应该只写幂等操作的程序,比如查询功能。post请求则负责写非幂等的操作,比如添加功能。

总结:
区别:
1、数据大小
2、安全性
3、书签

应用场景:
如果希望某个网页可以被随意分享,方便用户存书签,或者查询不敏感的数据时,用get请求。get请求不应该对服务器造成影响(如查询功能)
如果传递的参数敏感,或者可能对服务器产生影响的,应该使用post请求(如添加、更改、删除等)。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值