速读,五分钟深入了解HTTP( 八 )


因为 URL 只支持 ASCII 码,因此 GET 的参数中如果存在中文等字符就需要先进行编码 。例如 中文 会转换为 %E4%B8%AD%E6%96%87,而空格会转换为 %20 。POST 参考支持标准字符集 。
保密性GET方式提交数据,会带来安全问题,比如一个登录页面,通过GET方式提交数据时,用户名和密码将出现在URL上,如果页面可以被缓存或者其他人可以访问这台机器,就可以从历史记录获得该用户的账号和密码
但是,不能因为 POST 参数存储在实体主体中就认为它的安全性更高,因为照样可以通过一些抓包工具(Fiddler)查看 。
幂等性幂等的 HTTP 方法,同样的请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的 。换句话说就是,幂等方法不应该具有副作用(统计用途除外) 。
所有的安全方法也都是幂等的 。
在正确实现的条件下,GET,HEAD,PUT 和 DELETE 等方法都是幂等的,而 POST 方法不是 。
传输数据的大小首先声明:HTTP协议没有对传输的数据大小进行限制,HTTP协议规范也没有对URL长度进行限制 。
而在实际开发中存在的限制主要有:
**GET:**特定浏览器和服务器对URL长度有限制,例如 IE对URL长度的限制是2083字节(2K+35) 。对于其他浏览器,如Netscape、FireFox等,理论上没有长度限制,其限制取决于操作系 统的支持 。
因此对于GET提交时,传输数据就会受到URL长度的 限制 。
**POST:**由于不是通过URL传值,理论上数据不受 限 。但实际各个WEB服务器会规定对post提交数据大小进行限制,Apache、IIS6都有各自的配置 。
安全安全的 HTTP 方法不会改变服务器状态,也就是说它只是可读的 。
GET 方法是安全的,而 POST 却不是,因为 POST 的目的是传送实体主体内容,这个内容可能是用户上传的表单数据,上传成功之后,服务器可能把这个数据存储到数据库中,因此状态也就发生了改变 。
安全的方法除了 GET 之外还有:HEAD、OPTIONS 。
不安全的方法除了 POST 之外还有 PUT、DELETE 。
速度GET产生一个TCP数据包;POST产生两个TCP数据包 。
对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据) 。
参考关于HTTP协议,一篇就够了HTTPGET和POST两种基本请求方法的区别
本文来源:http://8rr.co/zgQS




推荐阅读