post与get区别总结

  post和get方法的区别总结
  简而言之,post就是提交,get方法就是获取。
  早期的网页技术并没有区分,两者都是会把数据提交到服务器,但是提交的方式不同。
  在IE的地址栏中,我们可以看到这样的
  URL:
  (1)http://blog.csdn.net/spring21st/archive/2007/10/09/1816488.aspx
  (2)http://www.baidu.com/s?wd=ASP.NET+Unleashed&cl=3
  首先,我们要明白对于IE的URL是有长度限制的,IE的最大URL长度限制是2083字节,而实际可以使用的最大长度为2048字节。(2)中就采用的是get方式进行提交,这种采用字符串连接的方式就存在长度大于IE的URL长度限制。
  这时采用(1)post方法就不会出现这种情况。
  1、Get 方法通过 URL 请求来传递用户的数据,将表单内各字段名称与其内容,以成对的字符串连接,置于 action 属性所指程序的 url 后,如[url]http://www.mdm.com/test.asp?name=asd&password=sad[/url],数据都会 直接显示在 url 上,就像用户点击一个链接一样;Post 方法通过 HTTP post 机制,将表单内各字段名称与其内容放置在 HTML 表头(header)内一起传送给服务器端交由 action 属性能所指的程序处理,该程序会通过标准输入(stdin)方式,将表单的数据读出并加以处理
  2、Get 方式需要使用 Request.QueryString 来取得变量的值;而 Post 方式通过 Request.Form 来访问提交的内容
  3、Get 方式传输的数据量非常小,一般限制在 2 KB 左右,但是执行效率却比 Post 方法好;而 Post 方式传递的数据量相对较大,它是等待服务器来读取数据,不过也有字节限制,这是为了避免对服务器用大量数据进行恶意攻击,根据微软方面的说法,微软对用 Request.Form() 可接收的最大数据有限制,IIS 4 中为 80 KB 字节,IIS 5 中为 100 KB 字节
  建议:除非你肯定你提交的数据可以一次性提交,否则请尽量用 Post 方法
  4、Get 方式提交数据,会带来安全问题,比如一个登陆页面,通过 Get 方式提交数据时,用户名和密码将出现在 URL 上,如果页面可以被缓存或者其他人可以访问客户这台机器,就可以从历史记录获得该用户的帐号和密码,所以表单提交建议使用 Post 方法;Post 方法提交的表单页面常见的问题是,该页面如果刷新的时候,会弹出一个对话框
  建议:出于安全性考虑,建议最好使用 Post 提交数据
  在Form里面,可以使用post也可以使用get。它们都是method的合法取值。但是,post和get方法在使用上至少有两点不同:
  1、Get方法通过URL请求来传递用户的输入。Post方法通过另外的形式。
  2、Get方式的提交你需要用Request.QueryString来取得变量的值,而Post方式提交时,你必须通过Request.Form来访问提交的内容。
  仔细研究下面的代码。你可以运行之来感受一下:
  代码
  <!--两个Form只有Method属性不同-->
  &lt;FORM ACTION=“getpost.asp” METHOD=“get”&gt;
  &lt;INPUT TYPE=“text” NAME=“Text” VALUE=“Hello World”&gt;&lt;/INPUT&gt;
  &lt;INPUT TYPE=“submit” VALUE=“Method=Get”&gt;&lt;/INPUT&gt;
  &lt;/FORM&gt;
  &lt;BR&gt;
  &lt;FORM ACTION=“getpost.asp” METHOD=“post”&gt;
  &lt;INPUT TYPE=“text” NAME=“Text” VALUE=“Hello World”&gt;&lt;/INPUT&gt;
  &lt;INPUT TYPE=“submit” VALUE=“Method=Post”&gt;&lt;/INPUT&gt;
  &lt;/FORM&gt;
  &lt;BR&gt;
  &lt;BR&gt;
  &lt;% If Request.QueryString(“Text”) &lt;&gt;““Then %&gt;
  通过get方法传递来的字符串是: “&lt;B&gt;&lt;%= Request.QueryString(“Text”) %&gt;&lt;/B&gt;“&lt;BR&gt;
  &lt;% End If %&gt;
  &lt;% If Request.Form(“Text”) &lt;&gt;““Then %&gt;
  通过Post方法传递来的字符串是: “&lt;B&gt;&lt;%= Request.Form(“Text”) %&gt;&lt;/B&gt;“&lt;BR&gt;
  &lt;% End If %&gt;
  说明
  把上面的代码保存为getpost.asp,然后运行,首先测试post方法,这时候,浏览器的url并没有什么变化,返回的结果是:
  通过Post方法传递来的字符串是: "Hello World"
  然后测试用get方法提交,请注意,浏览器的url变成了:
  http://localhost/general/form/getpost.asp?Text=Hello+World
  而返回的结果是:
  通过get方法传递来的字符串是: "Hello World"
  最后再通过post方法提交,浏览器的url还是:
  http://localhost/general/form/getpost.asp?Text=Hello+World
  而返回的结果变成:
  通过get方法传递来的字符串是: "Hello World"
  通过Post方法传递来的字符串是: "Hello World"
  提示
  通过get方法提交数据,可能会带来安全性的问题。比如一个登陆页面。当通过get方法提交数据时,用户名和密码将出现在URL上。如果:
  1、登陆页面可以被浏览器缓存;
  2、其他人可以访问客户的这台机器。
  那么,别人即可以从浏览器的历史记录中,读取到此客户的账号和密码。所以,在某些情况下,get方法会带来严重的安全性问题。
  建议
  在Form中,建议使用post方法。
  推荐讲解更详细的网站:
  http://blog.csdn.net/yaojianyou/archive/2007/08/01/1720913.aspx
  

本文转自
http://blog.csdn.net/spring21st/archive/2007/10/09/1816949.aspx
标签词:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值