您好,欢迎来到保捱科技网。
搜索
您的当前位置:首页表单提交方法之form中get和post的区别

表单提交方法之form中get和post的区别

来源:保捱科技网


一、get和post定义 form元素的method属性用来指定发送form的http方法: 使用get时,form数据集被附加到form元素的action属性所指定的URI后面。 使用post时,form数据集被包装在请求的body中并被发送。 使用get提交方式,生成的URI:user.do?loginId=abc get仅仅是拼接一个URI,然后直接向服务区请求数据,需要提交给服务器的数据集包含在URI中。 使用post提交方式,生成的URI:user.do post会把form的数据集,即loginId=abc这个键值对包装在请求的body中,发给服务器,然后向服务器请求数据。 二、get和post区别 1、安全性 如果用get提交一个验证用户名和密码的form,一般认为是不安全的,因为用户名和密码将出现在URL上,进而出现在浏览器的历史记录中。显然,在对安全性有要求的情况

下,应该使用post。

2、编码

get只能向服务器发送ASCII字符,而post则可以发送整个ISO106中的字符。

get和post对应的enctype属性有区别。enctype有两个值默认值为application/x-www-form-urlencoded,而另一个值multipart/form-data只能用于post。

3、提交的数据长度

IE将请求的URL长度为2083个字符,从而了get提交的数据长度,如果URL超出了这个,提交form时IE不会有任何反映。

4、缓存

由于一个get得到的结果直接对应到一个URI,所以get的结果页面有可能被浏览器缓存。而post一般则不能。

5、引用和SEO

可以用一个URI引用一个get的结果页面,而post的结果则不能,所以必然不能被搜索引擎搜到。

三、正确的使用get和post

当且仅当form是幂等的时候,使用get。

幂等:多次相同的请求产生的副作用,和一次请求的副作用相同。

如果提交请求纯粹只是从服务器端获取数据而不是进行其他操作,并且多次提交不会有明显的副作用,应该使用get。

比如:搜索引擎的查询(http://www.google.com/search?q=abc)和分页(user.do?page=1)

如果提交这个请求会产生其他操作和影响,就应该使用post。

比如:修改服务器上数据库中的数据;发送一封邮件;删除一个文件等

另一个要考虑因素是安全性。

若符合下列任一情况,则用post方法:

a.请求的结果有持续性的副作用,例如:数据库内添加新的数据行。

b.若使用get方法,则表单上收集的数据可能让URL过长。

c.要传送的数据不是采用ASCII编码。

若符合下列任一情况,则用get方法:

a.请求是为了查找资源,html表单数据仅用来搜索。

b.请求结果无持续性的副作用。

c.收集的数据及html表单内的输入字段名称的总长不超过1024个字符。

四、浏览器差异

IE6:URL长度为2083个字符;post之后,刷新页面不会自动重新post数据,会出现警告。

IE7和IE6相同。

Firefox:刷新页面不会自动重新post数据会出现警告。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- baoaiwan.cn 版权所有 赣ICP备2024042794号-3

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务