• form元素的method属性用来指定发送form的http方法
    1.   使用get时,form数据集被附加到form元素的action属性所指定的URL后面,仅仅是拼接一个URL,然后直接向服务区请求数据,需要提交给服务器的数据集包含在URL中。Get将表单中数据的按照variable=value的形式,添加到action所指向的URL后面,并且两者使用“?”连接,而各个变量之间使用“&”连接。
    2.   使用post时,form数据集被包装在请求的body中并发给服务器,然后向服务器请求数据。Post是将表单中的数据放在form的数据体中,按照变量和值相对应的方式,传递到action所指向URL。

Get是用来从服务器上获得数据,而post是用来向服务器上传递数据

  •  get和post的区别

1 安全性
如果用get提交一个验证用户名和密码的form,一般认为是不安全的。因为用户名和密码将出现在URL上,进而出现在浏览器的历史记录中。显然,在对安全性有要求的情况下,应该使用post。

2 编码
HTML 4.01 specification指出,get只能向服务器发送ASCII字符,而post则可以发送整个ISO10646中的字符(如果同时指定enctype="multipart/form-data"的话)。

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

3 提交的数据的长度
HTTP specification并没有对URL长度进行限制,但是IE将请求的URL长度限制为2083个字符,从而限制了get提交的数据长度。测试表明如果URL超出这个限制,提交form时IE不会有任何响应。其它浏览器则没有URL的长度限制,因此其它浏览器能通过get提交的数据长度仅受限于服务器的设置。

而对于post,因为提交的数据不在url中,所以通常可以简单地认为数据长度限制仅受限于服务器的设置。

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

5 引用和SEO
出于和上面相同的原因,我们可以用一个URI引用一个get的结果页面,而post的结果则不能,所以必然不能被搜索引擎搜到。

  •  正确地使用get和post

W3C的官方建议是:当且仅当form是幂等(idempotent)的时候,使用get。幂等是一个数学上的术语,其定义是:对于一个函数f : D -> D,如果D中的所有x满足f (f x) = f x,那么这个函数是幂等的。HTTP specification(比如RFC 2616)中,将幂等解释为:多次相同请求产生的副作用,和一次请求的副作用相同。

打个比方,如果你提交一个form会从Google上查询一个关键词,那么我们可以认为这个form是幂等的,因为1次提交和10次提交的副作用是差不多的(10次查询可能会多消耗一些电能);如果你提交一个form是订购一个终极大黄蜂(Utimate bumblebee),那么这就不是幂等的:要是你不小心多提交了1次form的话,你可能会被老婆乱骂,你不小心又提交了10次的话,你可能就破产了——一次提交和多次提交的副作用明显不同,所以这不是幂等的。

所以,一般来说,如果提交这个请求纯粹只是从服务端获取数据而不进行其他操作,并且多次提交不会有明显的副作用,应该使用get。比如:

搜索引擎的查询:http://www.google.com/search?q=yandixin; 
分页:ArticleList.asp?Page=1。 
如果提交这个请求会产生其它操作和影响,就应该使用post。比如:修改服务器上数据库中的数据; 发送一封邮件;删除一个文件。 

最新文章

  1. 没有水果机的也来体验下Visual Studio for Mac
  2. Hadoop下面WordCount运行详解
  3. 第二章 时间控件(DateTime Picker)
  4. MS CRM 2011的自定义和开发(11)——插件(plugin)开发(四)
  5. Android开发-API指南-系统权限
  6. jquery 绑定省份和城市
  7. Mysql创建函数时报错
  8. 循环小数 UVa202
  9. Azure上A/D系列虚拟机到DS系列迁移(1)
  10. JavaEE开发之SpringBoot工程的创建、运行与配置
  11. java加密解密
  12. javascript语法之循环语句小练习
  13. [译]async/await中阻塞死锁
  14. 18-09-06天津 关于Excel的一些操作
  15. (网页)java数组去重总结(转)
  16. vue中提示toFixed不是函数
  17. 【转】 .Net MVC4 上传大文件,并保存表单
  18. NO.3:自学tensorflow之路------MNIST识别,神经网络拓展
  19. Apache禁止显示目录结构
  20. dos常用命令使用说明

热门文章

  1. OC内存管理总结,清晰明了!
  2. 接口如何使用(以笑话大全api为例)
  3. 位数(digits)的处理
  4. vue配置路由
  5. 【z12】&&【b092】hankson的趣味问题
  6. WPF应用程序启动的问题(自定义Main函数启动)
  7. 【BZOJ 3675】[Apio2014]序列分割
  8. 【31.72%】【codeforces 604B】More Cowbell
  9. java根据xml配置文件导出excel通用方法
  10. ASP.NET MVC中实现多个button提交的几种方法