总结要点
安全与安全性
http协议对长度无规定(浏览器,服务器设置了大小)
本质
实现是一样的,但客服双方有不同的约定。
比如,我们用get标签表示要请求网页,用post标签表示要传输表单。(好比同样的货车,标签类型不同,卸载方式不同)其实就是,约定决定了数据类型(更具情况选取了其中一部分用)。
- 如果你用GET服务,在request body偷偷藏了数据,不同服务器的处理方式也是不同的,有些服务器会帮你卸货,读出数据,有些服务器直接忽略,所以,虽然GET可以带request body,也不能保证一定能被接收到哦。
好了,现在你知道,GET和POST本质上就是TCP链接,并无差别。但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。
-
因为POST需要两步,时间上消耗的要多一点,看起来GET比POST更有效。因此Yahoo团队有推荐用GET替换POST来优化网站性能。但这是一个坑!跳入需谨慎。为什么?
- GET与POST都有自己的语义,不能随便混用。
- 据研究,在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视。而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点。
- 并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次。
缓存
有关 GET 请求的其他一些注释:
GET 请求可被缓存
GET 请求保留在浏览器历史记录中
GET 请求可被收藏为书签
GET 请求不应在处理敏感数据时使用
GET 请求有长度限制
GET 请求只应当用于取回数据
有关 POST 请求的其他一些注释:
POST 请求不会被缓存
POST 请求不会保留在浏览器历史记录中
POST 不能被收藏为书签
POST 请求对数据长度没有要求
首先是"GET方式提交的数据最多只能是1024字节
",因为GET是通过URL提交数据,那么GET可提交的数据量就跟URL的长度有直接关系 了。而实际上,URL不存在参数上限的问题,HTTP协议规范没有对URL长度进行限制。这个限制是特定的浏览器及服务器对它的限制。
get方式提交数据的大小,http协议并没有硬性限制
;而是与浏览器及服务器、操作系统有关
。第二篇文章里,就有谈到用apache测试,使用get方式,url最长可达8167b
。其中跟帖留言中还有谈到代理的因素
在里面,可能url太长还没到服务,就已经被代理拒绝掉了。第一篇的留言讨论很能学到东西哦。
【post方式,传送数据最大理论上没有限制,取决于服务器设置和内存大小。】
实际中如果你上传文件的过程中可能会发现这样一个问题,即上传个头比较
大的文件到服务器时候,可能上传不上去,以PHP语言来说,查原因的时候你也许会看到有说PHP上传文件涉及到的参数PHP默认的上传有限定,一般这个值是2MB,更改这个值需要更改PHP.ini的post_max_size这个值。
PHP.ini配置文件中的默认文件上传大小为2M, 默认upload_max_filesize =2M,即文件上传的大小为2M,如果你想上传超过8M的文件,比如20M,你必须设定upload_max_filesize =20M。同时必须修改PHP.ini配置文件中的post_max_size选项,其代表允许POST的数据最大字节长度,默认为8M。如果POST数据超出限制,那么$_POST和$_FILES将会为空。要上传大文件,你必须设定该选项值大于upload_max_filesize指令的值。另外如果启用了内存限制,那么该值应当小于memory_limit选项的值。
那么,post那么好为什么还用get?get效率高!
。
GET请求只能进行url编码,而POST支持多种编码方式。
GET只接受ASCII字符的参数的数据类型,而POST没有限制
其中,HEAD请求在客户程序和服务器之间进行交流,而不会返回具体的文档。当使用GET和POST方法时,服务器最后都将结果文档返回给客户程序,浏览器将 刷新显示。而HEAD请求则不同,它仅仅交流一些内部数据,这些数据不会影响浏览的过程。因此HEAD方法通常不单独使用,而是和其他的请求方法一起起到 辅助作用。一些搜寻引擎使用的自动搜索机器人使用这个方法来获得网页的标志信息,或者进行安全认证时,使用这个方法来传递认证信息。
除了这三种最常见的访问方法之外,在HTTP1.1中还定义了更多的访问方法类型,如PUT,用于将网页放置到正确位置,DELETE用于删除相关文档 等。这些方法并不常用,因而大部分Web服务器软件并没有实现他们。然而对于特定场合他们还是非常有用的,例如使用软件编辑网页时,网页编辑器可以使用这 些方法,管理不同的网页。
如果服务器不支持客户发送的请求方法,服务器将返回错误并立即关闭连接。
效率
缓存
安全性
数据量
安全性
1.被缓存
2.被其他用户查看到
数据类型
URL
例如:login.action?name=hyddd&password=idontkNow&verify=%E4%BD%A0%E5%A5%BD。Url的编码格式采用的是ASCII码,而不是Unicode,
这也就是说你不能在Url中包含任何非ASCII字符,所有非ASCII字符均需要编码再传输,关于Url编码可参考:。
数据长度
HTTP中定义的有哪些?
Http协议定义了客户端与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL定位了这个资源,而HTTP中的GET,POST,PUT,DELETE就是对应着对这个资源的查,改,增,删4个操作。到这里,大家应该有个大概的了解了,GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。那么,除了上面说的四种方法,HTTP还有其它方法么?其实HTTP中定义了以下几种请求方法:
GET方法; 请求资源
HEAD方法;资源信息
PUT方法; 新文档
POST方法; 提交数据
TRACE方法;回环诊断,中途是否被修改
OPTIONS方法;支持的方法
DELETE方法。
误区
误区一:POST可以比GET提交更多更长的数据?
POST GET并没有(HTTP协议规范均没有进行大小限制)。POST大小取决于服务器处理能力,
误区二:POST比GET安全?
POST抓包还是可以看到。所以说,从这方面来说,POST也是以五十步笑百步了。(虽然缓存,链接这方面get有缺陷)
抓包内容
https对POST与GET加密
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。