参考链接:https://www.cnblogs.com/hyddd/archive/2009/03/31/1426026.html

通信流程

Qt之Http - 图1
http与服务器交互方法:get、post、put、delete…
url:资源描述符,描述网络上的资源地址。
http通过get\post按照解析url获取到的地址端口和参数等向服务器发送请求,服务器依据接收到的请求做出响应的处理并返回信息给客户端。GET 请求一般不应产生副作用。就是说,它仅仅是获取资源信息,就像数据库查询一样,不会修改,增加数据,不会影响资源的状态。POST表示可能修改变服务器上的资源的请求。
表面现像上面看看GET和POST的区别:

  1. 数据存放位置
    1. 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。
    2. POST把提交的数据则放置在是HTTP包的包体中。
  2. 提交数据长度:
    1. GET提交的数据因为需要拼接在URL后面,那么一般get请求的数据量就跟url的长度有关了,而一般浏览器与服务器对url的字符长度进行了限制。URL不存在参数上限的问题,HTTP协议规范没有对URL长度进行限制。
    2. POST理论上是没有大小限制的,HTTP协议规范也没有进行大小限制。
  3. POST的安全性要比GET的安全性高。注意:这里所说的安全性和上面GET提到的“安全”不是同个概念。上面“安全”的含义仅仅是不作数据修改,而这里安全的含义是真正的Security的含义,比如:通过GET提交数据,用户名和密码将明文出现在URL上,因为(1)登录页面有可能被浏览器缓存,(2)其他人查看浏览器的历史纪录,那么别人就可以拿到你的账号和密码了,除此之外,使用GET提交数据还可能会造成Cross-site request forgery攻击。

总结一下,Get是向服务器发索取数据的一种请求,而Post是向服务器提交数据的一种请求,在FORM(表单)中,Method默认为”GET”,实质上,GET和POST只是发送机制不同,并不是一个取一个发!