大家都知道Post/Get应用上的区别,但是对于本质区别了解的都不多。笔者依据自己的经验和网上搜集的资料,整理如下:
应用上的区别
Get:将传递的数据加在url地址后面,传送到服务器。Get方法由于受到URL长度的限制,传递数据量小于1024字节。
Post: 按照邮寄传输数据的方式,将数据传送到服务器。传递数据大小依赖web服务器。
原理上的区别
1. Post顾名思义,就是为了将数据传送到服务器段,Get就是为了从服务器段取得数据.而Get之所以也能传送数据,只是用来设计告诉服务器,你到底需要什么样的数据。Post的信息作为http请求的内容,而Get是在Http头部传输的。
2. 使用Get方法上传时数据会放置在CGI程序的环境变量中,Get方式受限于环境变量的可用空间,最多只能上传1024个字节的数据。而Post方式则将数据放在CGI程序的标准输入(stdin)中,CGI程序可以通过读取标准输入来得到这些数据,因此,上传的数据大小不受限制!
注:
1. win2003的iis6.0对asp文件的Post方法作了限制,不能上传大于200k的东西!但是,对于aspx文件,即:asp.net不限制!
2. 在win2000 + iis 5.0下,Post 方法限制传递的数据为2M。
3. 如果在Post时,同时声明ENCTYPE="multipart/form-data",则不限制大小!
4. Apache中有这么两个参数控制
post_max_size=1024M
upload_max_filesize = 1000M