get 与 post 提交方法的区别? 除此之外你还知道其它的 HTTP 请求吗
- get 是把参数数据队列加到提交表单的 action 属性所指的 url 中,值和表单内各个字段一一对应,在 URL 中可以看到。POST 是通过 HTTP post 机制,将表单内各个字段与其内容放置在 HTML HEADER 内一起传送到 ACTION 属性所指的 URL 地址。用户看不到这个过程。
- 对于 get 方式,服务器端用 Request.QueryString 获取变量的值,对于 POST 方式,服务器端用 Request.Form 获取提交的数据。
- get 传送的数据量小。post 传送的数据量较大,一般被默认为不受限制。但理论上,IIS4 中最大量为 80KB, IIS5 中为 100KB,get 安全性非常低,post 安全性较高。
5.get安全性非常低,post安全性较高。但是执行效率却比Post方法好。
HTTP协议对GET和POST都没有对长度的限制
HTTP协议明确地指出了,HTTP头和Body都没有长度的要求。而对于URL
长度上的限制,有两方面的原因造成:
1.浏览器。据说早期的浏览器会对URL长度做限制。据说IE对URL长度会限制在2048个字符内(流传很广,而且无数同事都表示认同)。但我自己试了一下,我构造了90K的URL通过IE9访问live.com,是正常的。网上的东西,哪怕是Wikipedia上的,也不能信。
2.服务器。URL长了,对服务器处理也是一种负担。原本一个会话就没有多少数据,现在如果有人恶意地构造几个几M大小的URL,并不停地访问你的服务器。服务器的最大并发数显然会下降。另一种攻击方式是,把告诉服务器Content-Length是一个很大的数,然后只给服务器发一点儿数据,嘿嘿,服务器你就傻等着去吧。哪怕你有超时设置,这种故意的次次访问超时也能让服务器吃不了兜着走。有鉴于此,多数服务器出于安全啦、稳定啦方面的考虑,会给URL长度加限制。但是这个限制是针对所有HTTP请求的,与GET、POST没有关系。
get 安全性非常低,post 安全性较高?
答: POST稍微安全一些,起码不会把QueryString直接显示在URL中
对于安全性的定义,http协议的解释是这样的:
Authors ofservices which use the HTTP protocol SHOULD NOT use GET based forms for thesubmission of sensitive data, because this will cause this data to be encodedin the Request-URI. Many existing servers, proxies, and user agents will logthe request URI in some place where it might be visible to third parties.Servers can use POST-based form submission instead.
翻译: 使用HTTP协议的服务的作者不应该将基于GET的表单用于敏感数据的声明,因为这将导致该数据被编码到请求uri中。许多现有的服务器、代理和用户代理将在第三方可能可见的位置登录请求URI。服务器可以使用基于post的表单提交。
更多区别参见请点击