http协议get和post的区别

如题所述

1.GET请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL和传输数据,参数之间以&相连,如:www.google.com/webhp?hl=zh-cn 如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用BASE64加密,得出如:%E4%BD%A0%E5%A5%BD,其中%XX中的XX为该符号以16进制表示的ASCII。
POST把提交的数据则放置在是HTTP包的包体中。

2."GET方式提交的数据最多只能是1024字节,理论上POST没有限制,可传较大量的数据,IIS4中最大为80KB,IIS5中为100KB"

以上这句是我从其他文章转过来的,其实这样说是错误的,不准确的:

(1).首先是"GET方式提交的数据最多只能是1024字节",因为GET是通过URL提交数据,那么GET可提交的数据量就跟URL的长度有直接关系了。而实际上,URL不存在参数上限的问题,HTTP协议规范没有对URL长度进行限制。这个限制是特定的浏览器及服务器对它的限制。IE对URL长度的限制是2083字节(2K+35)。对于其他浏览器,如Netscape、FireFox等,理论上没有长度限制,其限制取决于操作系统的支持。

注意这是限制是整个URL长度,而不仅仅是你的参数值数据长度。[见参考资料5]

(2).理论上讲,POST是没有大小限制的,HTTP协议规范也没有进行大小限制,说“POST数据量存在80K/100K的大小限制”是不准确的,POST数据是没有限制的,起限制作用的是服务器的处理程序的处理能力。

对于ASP程序,Request对象处理每个表单域时存在100K的数据长度限制。但如果使用Request.BinaryRead则没有这个限制。

由这个延伸出去,对于IIS 6.0,微软出于安全考虑,加大了限制。我们还需要注意:

1).IIS 6.0默认ASP POST数据量最大为200KB,每个表单域限制是100KB。
2).IIS 6.0默认上传文件的最大大小是4MB。
3).IIS 6.0默认最大请求头是16KB。
IIS 6.0之前没有这些限制。[见参考资料5]

所以上面的80K,100K可能只是默认值而已(注:关于IIS4和IIS5的参数,我还没有确认),但肯定是可以自己设置的。由于每个版本的IIS对这些参数的默认值都不一样,具体请参考相关的IIS配置文档。

3.在ASP中,服务端获取GET请求参数用Request.QueryString,获取POST请求参数用Request.Form。在JSP中,用request.getParameter(\"XXXX\")来获取,虽然jsp中也有request.getQueryString()方法,但使用起来比较麻烦,比如:传一个test.jsp?name=hyddd&password=hyddd,用request.getQueryString()得到的是:name=hyddd&password=hyddd。在PHP中,可以用$_GET和$_POST分别获取GET和POST中的数据,而$_REQUEST则可以获取GET和POST两种请求中的数据。值得注意的是,JSP中使用request和PHP中使用$_REQUEST都会有隐患,这个下次再写个文章总结。

4.POST的安全性要比GET的安全性高。注意:这里所说的安全性和上面GET提到的“安全”不是同个概念。上面“安全”的含义仅仅是不作数据修改,而这里安全的含义是真正的Security的含义,比如:通过GET提交数据,用户名和密码将明文出现在URL上,因为(1)登录页面有可能被浏览器缓存,(2)其他人查看浏览器的历史纪录,那么别人就可以拿到你的账号和密码了,除此之外,使用GET提交数据还可能会造成Cross-site
request forgery攻击。

总结一下,Get是向服务器发索取数据的一种请求,而Post是向服务器提交数据的一种请求,在FORM(表单)中,Method默认为"GET",实质上,GET和POST只是发送机制不同,并不是一个取一个发.
温馨提示:内容为网友见解,仅供参考
无其他回答

GET和POST的区别是什么?
一、指代不同 1、GET:从指定的资源请求数据。2、POST:向指定的资源提交要被处理的数据 二、规则不同 1、GET: 请求可被缓存; 请求保留在浏览器历史记录中; 请求可被收藏为书签;请求不应在处理敏感数据时使用; 请求有长度限制; 请求只应当用于取回数据。2、POST:请求不会被缓存; 请求不会...

post和get的区别
一、区别概述 1. 功能不同:Get请求用于获取数据,而Post请求用于发送数据。2. 参数传输方式不同:Get请求的参数通常包含在URL的查询字符串中,而Post请求的参数则包含在请求体中。3. 安全性不同:由于Get请求的参数直接显示在URL中,相对不够安全,不适合传输敏感数据。而Post请求则能更好地保护数据...

post和get的区别
1、Get向服务器请求数据。依照HTTP协议,get 是用来请求数据。2、Post向服务器发数据。依照HTTP协议,Post的语义是向服务器添加数据,也就是说按照Post的语义,该操作是会修改服务器上的数据的。区别二:服务器请求的区别 1、Get请求是可以被缓存的,举个例子,你访问baidu.com,就是向baidu的服务器发...

post和get的区别?
Post和Get是HTTP协议中的两种主要请求方法,它们在功能和使用场景上存在明显的区别。一、区别概述 1. 数据传输方式:Get请求通常用于获取数据,而Post请求用于发送数据。2. 参数传递方式:Get请求的参数通常包含在URL中,而Post请求的参数则位于请求体中。3. 安全性:由于Get请求的参数在URL中可见,相对不...

get和post的区别
get和post的区别:一、基本定义 1. GET:是HTTP协议中的一种请求方法,通常用于请求从服务器检索信息。由于其数据包含在URL中,因此GET不适合传输敏感数据。2.POST:也是HTTP协议中的一种请求方法,主要用于向服务器发送数据,通常用于提交表单数据或上传文件等需要改变服务器状态的操作。POST请求的数据包含...

浅谈http中get和post的区别
说完原理性的问题,我们再从表面现像上面看看GET和POST的区别:1.GET请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL和传输数据,参数之间以&相连,如:login.action?name=hyddd&password=idontknow&verify=%E4%BD%A0%E5%A5%BD。如果数据是英文字母\/数字,原样发送,如果是空格...

http请求中get和post请求的区别
接下来看看两种请求方式的区别:1、GET请求,请求的数据会附加在URL之后,以?分割URL和传输数据,多个参数用&连接。URL的编码格式采用的是ASCII编码,而不是uniclde,即是说所有的非ASCII字符都要编码之后再传输。POST请求:POST请求会把请求的数据放置在HTTP请求包的包体中。上面的item=bandsaw就是实际的...

getpost请求的区别 - 知百科
getpost请求的区别:1、安全性不同。post请求更安全(不会作为url的一部分,不会被缓存、保存在服务器日志、以及浏览器浏览记录中,get请求的是静态资源,则会缓存,如果是数据,则不会缓存)2、数据大小不同。post请求发送的数据更大(get请求有url长度限制,http协议本身不限制,请求长度限制是由浏览...

HTTP协议中请求方法Get和Post的区别是什么?
而POST请求是放在请求头中的,我们是无法直接看到的;\\x0d\\x0a(3)、GET提交有数据大小的限制,一般是不超过1024个字节,而这种说法也不完全准确,HTTP协议并没有设定URL字节长度的上限,而是浏\\x0d\\x0a览器做了些处理,所以长度依据浏览器的不同有所不同;POST请求在HTTP协议中也没有做说明,...

http协议中get和post的区别
Get:是以实体的方式得到由请求URI所指定资源的信息,如果请求URI只是一个数据产生过程,那么最终要在响应实体中返回的是处理过程的结果所指向的资源,而不是处理过程的描述。Post:用来向目的服务器发出请求,要求它接受被附在请求后的实体,并把它当作请求队列中请求URI所指定资源的附加新子项,Post被...

相似回答