http中get与post的区别

来源:互联网 发布:c语言时间转时间戳 编辑:程序博客网 时间:2024/06/06 08:53
http中get与post的区别:
Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE;分别对应查、改、增、删。一般get用于获服务器数据,post用于发送服务器数据;form默认为get方式。
具体区别如下:
1)GET使用URL或Cookie传参。而POST将数据放在BODY中;
2)GET的URL会有长度上的限制,则POST的数据则可以非常大。
3)POST比GET安全,因为数据在地址栏上不可见。
网上查询的大部分答案基本都是这些。但其中过一篇文章写的很有诱惑力(原文链接:http://www.cnblogs.com/nankezhishi/archive/2012/06/09/getandpost.html#!comments)
该文章从两个方面否定了上述的三种传统的答案,经过查找最终发现其中的一些问题。


第一:http对于URL是否有长度的限制。
HTTP 1.1 协议没有对URL的长度做限制,但是在某些应用场景中会出现URL限制的问题,这就要从两个方面去分析。
首先是从服务器端分析,apache的官方文档中对长度没有做明确的限制,但是一般不会太大,查询的文献表示一般不会超过2G。
其次是从浏览器端分析,
游览器 最大长度(字符数)          备注
 IE   2083                     如果超过这个数字,提交按钮没有任何反应
 Firefox 65,536 
 chrome 8182  
 Safari 80,000 
 Opera 190,000 
(具体长度没有验证,只是单纯的拿来主义)
(相关的文章链接:http://blog.sina.com.cn/s/blog_62fc65d90100onhm.html,
http://httpd.apache.org/docs/2.0/mod/core.html#limitrequestline)
 
第二:如果Method是GET,数据(参数)就一定要放在URL中而不能放在BODY中。
该问题也查询了相关的文章,结果是:你可以在GET请求中带有HTTP BODY内容,但是服务端不应该解析它,否则有悖HTTP 1.1规范。(相关文章链接:http://stackoverflow.com/questions/978061/http-get-with-request-body,

http://kaifage.com/notes/125/cannot-include-parameters-in-the-get-body-request-http.html)

当然,GET与POST中还有一些区别,但是都由最开始的三个区别展开,以后会详述;虽说实质性的问题没有解决太多,但是还是很享受查询过程中的乐趣的。



虽然问题比较简单,但是通过查询深层的含义还是比较有意思的,水平有限,所以暂时没办法用代码的方式去验证上述的查询过程,但今后或许会真正的了解这其中相关的知识点。
0 0
原创粉丝点击