目录
Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE;URL全称是资源描述符,我们可以认为一个URL用于描一个网络上的资源,而HTTP的GET,POST,PUT,DELETE方法对应着这个资源的查、改、增、删(通俗的可以这样理解)。
原理上的区别:
根据HTTP规范,GET用于信息获取,而且应该是安全的和幂等的:
- 所谓的安全的仅仅指非修改信息,对资源状态没影响
- 幂等的意味着对同一个URL的多次请求应该返回相同的结果
根据HTTP的规范,POST表示可能修改服务器上资源的请求;
表面现象看的区别:
- GET请求的数据会附在URL之后,以?分隔URL和传输数据参数之间以&相连如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用BASE64加密,得出如:%E4%BD%A0%E5%A5%BD,其中%XX中的XX为该符号以16进制表示的ASCII。
POST把提交的数据则放置在是HTTP包的包体中。 - GET可提交的数据大小是由URL的长度决定的(整个URL的长度,而不是你的参数的长度)
POST的数据是没有大小限制的,HTTP协议规范也没有进行大小限制,而一般的限制是服务器处理程序的处理能力
-POST的安全性要比GET的安全性高。注意:这里所说的安全性和上面GET提到的“安全”不是同个概念。上面“安全”的含义仅仅是不作数据修改,而这里安全的含义是真正的Security的含义,比如:通过GET提交数据,用户名和密码将明文出现在URL上,因为(1)登录页面有可能被浏览器缓存,(2)其他人查看浏览器的历史纪录,那么别人就可以拿到你的账号和密码了,除此之外,使用GET提交数据还可能会造成Cross-site request forgery攻击。
总结
简单来说就是GET是向服务器发起索取数据的一种请求,POST是向服务器发起提交数据的一种请求。