问: 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的表单提交。更多区别参见请点击
本文深入解析GET与POST两种HTTP请求方法的区别,包括数据传输方式、安全性、数据量限制及服务器处理方式。同时,探讨了HTTP协议对GET和POST长度限制的误解,指出实际限制来自浏览器和服务器的安全及稳定性考量。
922

被折叠的 条评论
为什么被折叠?



