(经典)http中get和post方法的区别

来源:互联网 发布:止汗露哪个牌子好 知乎 编辑:程序博客网 时间:2024/06/05 13:33

近期看Http相关书,其中http方法中get和post的区别是一个十分经典的题目,查阅相关资料之后,为了直观,我将整理的信息用表格形式展现出来,便于比较~

~ get post 备注 定义 从指定的资源URI请求数据 向指定资源URI提交被处理的数据 是否幂等 是 否 幂等是指一次和多次相同的操作 能得到相同的结果 请求数据 放在URI之后,用?进行分隔uri和数据,也就是说放在http协议头中 吧提交的数据放在http包的包体中 备注1 请求数据大小 有限制,1024字节 理论上没有限制 备注2 安全性 低 高 备注3 后退按钮/刷新 无害 数据会被重新提交(浏览器应告知用户数据会被重新提交) 书签 可收藏为书签 不可收藏为书签 缓存 能被缓存 不能缓存 编码类型 application/x-www-form-urlencoded application/x-www-form-urlencoded 或 multipart/form-data。为二进制数据使用多重编码 历史 参数保留在浏览器历史中 参数不会参数不会保存在浏览器历史中 对数据类型的限制 只允许ASCII字符 没有限制,允许二进制数据

另外也提一下,post和put的区别:

两者的主要区别是,post不是幂等的,put是幂等的。根据不同场景,两者有不同的效果。
比如一个博客系统,如果发布名称相同的博客。
* 如果用post方法,则产生两篇文章;
* 如果用put方法,则后面发布的文章则会覆盖前一篇文章;

备注1:
get请求的url发送数据格式为:

localhost/example.jsp?name1=value1&name2=value2

post请求的数据在Http的消息主体中,形式如下:

POST /example.jsp HTTP/1.1Host: localhostname1=value1&name2=value2

备注2:
get方式有数据限制是以下原因:
因为GET是通过URL提交数据,那么GET可提交的数据量就跟URL的长度有直接关系了。而实际上,URL不存在参数上限的问题,HTTP协议规范没有对URL长度进行限制。这个限制是特定的浏览器及服务器对它的限制。IE对URL长度的限制是2083字节(2K+35)。对于其他浏览器,如Netscape、FireFox等,理论上没有长度限制,其限制取决于操作系统的支持。
.理论上讲,POST是没有大小限制的,HTTP协议规范也没有进行大小限制,说“POST数据量存在80K/100K的大小限制”是不准确的,POST数据是没有限制的,起限制作用的是服务器的处理程序的处理能力。

备注3:这里安全的含义是真正的Security的含义,比如:通过GET提交数据,用户名和密码将明文出现在URL上,因为(1)登录页面有可能被浏览器缓存,(2)其他人查看浏览器的历史纪录,那么别人就可以拿到你的账号和密码了,除此之外,使用GET提交数据还可能会造成Cross-site request forgery攻击。

参考:

w3c http方法:get与post比较

hyddd-浅谈HTTP中Get与Post的区别

原创粉丝点击