众所周知的http请求有两种:
get与post:
这两种请求的区别就是传参的参数放的位置不同,一个在Request URL,一个在Request Form Data。
如果是post请求,浏览器会自动将?a=1&b=2转化为a:1 b:2
第一个误区:post提交是安全的,因为他不在url中,所以看不到,但是如果使用IE8、chrome、fireFox,打开deBug,一样可以在FormData中找到,并且还是键值对),如果硬要说安全,那就是url会被记录在web容器的日志中,而get是带参数的。如果日志服务器被黑了,这些参数就泄露了。
第二个误区:get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。这话半对半错,因为
1)URL不存在参数上限的说法。该问题实际是IE对URL有长度限制的问题(当然,fireFox和chrome也有提示,但是并没有阻止,没仔细研究)
2)HTTP协议规范也没有对URL长度进行限制。这个限制是特定的浏览器及服务器对它的限制。IE对URL长度的限制是2083字节(http://support.microsoft.com/kb/q208427/)。对于其他浏览器,如Netscape等,理论上没有长度限制,其限制取决于操作系统的支持(操作系统的支持很重要,因为XP和WIN7都支持大URL,如果你的服务器是XP和WIN7系统,那么只要将Tomcat和Jetty(我使用的是这两种服务器)的HeaderBufferSize修改大一些,那么URL就能传大参数,但是Linux就悲剧了,会提示头文件过大)。因此我用血的教训告诉大家,最好不要用get提交大数据,服务器换了操作系统就OVER了。
第三个误区:URL长度限制是get提交的的长度限制。值注意这个限制是整个URL长度,而不仅仅是你的参数值数据长度(整个URL包括post提交所在的FormData区)。
理论上post请求是没有长度限制的,他取决于服务器的配置,处理能力。
弄清楚运行环境的默认设定值有助于你的设计及对出现的问题做快速的解决。
当然,如果web2.0的系统。post提交的大小不用去考虑。
说了这么多,几乎都是说get的坏处,有以下几点好处:
一、get设计的初衷就是向服务器请求数据,而post才是向服务器请求数据。
二、表单处理中的GET方法有一个POST方法不具备的很大的优点:它创建了一个真正新的、完全不同的URL查询字符串。这样,用户现在可以把这一页记作书签。
三、每个GET提交被记录在WEB服务器日志中,数据集也被包括在内
如果表单中有附件,IIS6的限制是6M |