Get和Post的区别

一,简介

Get和Post是超文本传输协议(HTTP)的两种方法:

· GET - 从指定的资源请求数据。

· POST - 向指定的资源提交要被处理的数据(修改数据)。

 

二,从广义上区分

1,网络上有很多文章认为广义上GET和POST只是一个或两个TCP数据包的问题

 

如:https://zhuanlan.zhihu.com/p/22536382文章的作者认为 而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。

2,两种方法没有任何区别

 

其实如果我们认真研究HTTP1.1协议 HTTP1.1协议中文版-RFC2616 发现:

· 协议的规定是客户端要想等待100响应,它必须发100-continue,如果没有body,它不能发100-continue,也就是说客户端可以自己选择,并没有规定是否一定要分两次发

· 也就是说Get请求如果带上body,浏览器只要支持,也能发送两个包。所以上文的那篇文章既不属于广义也不属于狭义,四不像。

 

三,从狭义上区分

 

因为客户端和服务端的约束,或者世俗形成的约定

· Get是幂等的,Post不是(幂等:多次请求对数据时安全的)(所以在缓存,浏览器历史和书签方面有区别)

· Post请求比Get请求更安全,Get请求可能会把账号密码直接带在Url

· 有的浏览器可能对URL有长度限制,所以Get的发送数据是有大小限制的(其实很多服务器框架也对request body有大小限制)

· URL只能传ASCII字符,所以Get的参数只能用ASCII编码,Post没有限制

· 编码类型区别,Get只能是 application/x-www-form-urlencoded, Post可以是application/x-www-form-urlencoded 或 multipart/form-data

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值