`
virtual_function
  • 浏览: 127515 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

HTTP请求Get和Post的区别总结

    博客分类:
  • HTTP
阅读更多

 

区别与联系:GET一般用来取数据Post一般用来提交数据

 

  • get是从服务器上获取数据,post则是向服务器传送数据;
  • get将表单中数据的按照variable=value的形式,添加到action所指向的URL后面;Post是将表单中的数据放在请求的数据体中,按照变量和值相对应的方式,传递到action所指向URL;

所以从上述也可以得到另外两个结论:

 

  • get传送的数据量较小,不能大于2KB,这主要是因为受URL长度限制。post传送的数据量较大,所以在上传文件只能使用Post。一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB;
  • get安全性非常低(因为用户可以通过URL看到),post安全性较高(其所有操作对用户来说都是不可见的)。但是执行效率却比post方法好;
  • Get限制Form表单的数据集的值必须为ASCII字符;而Post支持整个ISO10646字符集;
  • Get是Form的默认方法;
  • Get方式提交来的数据在服务器端用Request.QueryString()来获取,用Post方式提交的数据用Request.Form()来获取(这一点不是很明确);

建议:

1、如果是包含机密信息的话,建议用post数据提交方式;

2、在做数据查询时,建议用Get方式;而在做数据添加、修改或删除时,建议用Post方式;

 

所以如果有敏感数据是不应该用get方法的,但是有例外,就是ajax请求时候即使是敏感字段也可以用get。 

 

关于响应速度: 

  • get请求是可以被客户端缓存的。比post高效。 
  • AJAX环境中get响应快速,post需要先发送header再发送post data;

关于安全:

  • GET requests can be cached 
  • GET requests can remain in the browser history 
  • GET requests can be bookmarked 
  • GET requests can be distributed & shared 
  • 说 POST 比 GET 安全肯定是错的,POST跟GET都是明文传输;
  • 语义上,GET是获取指定URL上的资源,是读操作,重要的一点是不论对某个资源GET多少次,它的状态是不会改变的,在这个意义上,我们说GET是安全的(不是被密码学或者数据保护意义上的安全);
  • 因为GET是安全的,所以GET返回的内容可以被浏览器,Cache服务器缓存起来(其中还有很多细节,但不影响这里的讨论);
  • 而POST的语意是对指定资源“追加/添加”数据,所以是不安全的,每次提交的POST,参与的代码都会认为这个操作会修改操作对象资源的状态;浏览器在你按下F5的时候会跳出确认框,缓存服务器不会缓存POST请求返回内容;

 

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics