一般:Get是用于获取数据用的,
POST是用于将数据发送给服务器用的。
其实Get也可以改为Get2,这都是RCF文档说的。具体实现还要看服务器的具体实现(Apache, IIS, Nigex)

正确的答案可以这么说:
1.GET使用URL或Cookie传参。而POST将数据放在BODY中。
2.GET的URL的长度会有长度上的限制, POST的数据则可以非常大。
3.GET没有POST安全,因为数据在地址栏上可见。

GET和POST与数据如何传输没有关系
GET和post是由HTTP协议定的。在HTTP协议中,Method和Data是正交的两个概念,也就是说,使用哪个method与应用层的数据如何传送是没有相互关系的。
HTTP没有要求如果method是POST数据就要放在BODY中。也么有要求如果method是GET,数据参数就一定放在URL中而不能放在BODY中。

网上的(一般约定)是从何而来的呢?是在HTML标准中描述的。而且现在的web server都是支持GET中包含BODY这样的请求。虽然这样的请求不可能从浏览器发出,但是现在的web server又不只是给浏览器使用,已经完全超出了HTML的范围了。

HTTP协议对HTTP头和BODY都没有长度的要求。而长度的要求来自浏览器和服务器。早期的浏览器对URL长度是有要求的。

服务器。URL长了对服务器也是一种负担。
服务器安全:URL长了对服务器处理也是一种负担。原本一个会话就没有多少数据,现在如果有人恶意地构造几个几M大小的URL,并不停的访问你的服务器。服务器的最大并发数显然会下降。
另外一种攻击方式是:把告诉服务器content-Length是一个很大的数,然后只给服务器发一点数据,嘿嘿,服务器就会傻等着去吧。哪怕你有超时设置,这种故意的次次访问超时也能让服务器吃不了兜着走。有鉴于此,多数服务器出于安全啦,稳定啦方面的考虑,会给URL长度限制。但是这个限制是针对所有HTTP请求的,与GET,POST没有关系。

觉得POST数据比GET数据安全的人会说:防君子不防小人;中国小白多,能防小白用户就行了。
哼,我不以为然,那你怎么不说,URL参数都是Encode过了,或是Base64一下,小白也看不懂啊。
我笑到:五十步笑百步,再聪明点的小白还会截包并重发呢,Opera就有这样的功能。
那人阴险地祭出神器–最终解释权,说,“”这个不算小白啊“”。(想起杭州的小白,白转涛)

最后一点感想:
我之前一直做windows桌面应用,对web开发一无了解。直到一年多前转做服务端,才开始了解HTTP,不是HTML.服务器开放端口是基于REST理念设计的,使用的是HTTP协议,但是传输的内容不是HTML.这不是web server,而是一个Web Service.

如果一个人一开始就做web开发,很可能把HTML对HTTP协议的使用方式,当成HTTP协议的唯一的合理使用方式。从而犯了以偏概全的错误。

知之为知之,不知为不知,是知也。