日期:2014-05-17  浏览次数:20685 次

一个突发奇想的问题,HTTP机制既然有了GET,为什么还要设置post?
今天突发奇想,为什么HTTP协议机制里要设置get和Post两种方法?

我一般认为GET只是提交请求,而post是用来向服务器传值

但是get方法也可以通过URL来传参数啊,比如http://www.google.cn?q=http

写代码也可以通过 request.setParameter方法来传参数

也就是说其实get也可以传值的,那么当初确定http机制时已有get方法,为什么还要post方法?它们在具体实现上有什么不同,比如提交值的内存分配什么的?



------解决方案--------------------
一楼不错,要说的都说到了区别;
------解决方案--------------------
1、Get是用来从服务器上获得数据,而Post是用来向服务器上传递数据。

2、Get将表单中数据的按照variable=value的形式,添加到action所指向的URL后面,并且两者使用“?”连接,而各个变量之间使用“&”连接;Post是将表单中的数据放在form的数据体中,按照变量和值相对应的方式,传递到action所指向URL。

3、Get是不安全的,因为在传输过程,数据被放在请求的URL中,而如今现有的很多服务器、代理服务器或者用户代理都会将请求URL记录到日志文件中,然后放在某个地方,这样就可能会有一些隐私的信息被第三方看到。另外,用户也可以在浏览器上直接看到提交的数据,一些系统内部消息将会一同显示在用户面前。Post的所有操作对用户来说都是不可见的。

4、Get传输的数据量小,这主要是因为受URL长度限制;而Post可以传输大量的数据,所以在上传文件只能使用Post。

5、Get限制Form表单的数据集的值必须为ASCII字符;而Post支持整个ISO10646字符集。

6、Get是Form的默认方法。

------解决方案--------------------
如果说http协议为什么这么做,我认为与安全无关,主要是tcp/ip的头都是有长度限制的。即大家所讲的GET 传值的长度有限
------解决方案--------------------
还有一点也关键.
post请求不是等幂的.而get是等幂的.
等幂,大概意思是发生多次请求,得到的是一样的返回.
post是会改变系统数据的.
------解决方案--------------------
还能POST文件到服务器上面

GET就做不到
------解决方案--------------------
帮顶,学习啦!!