一、論點(diǎn)
1.Get用于信息獲取,http協(xié)議要求安全性和冪等性,Post請(qǐng)求用于更新和修改服務(wù)的資源琐谤,不具有冪等性;
2.兩者本質(zhì)上都是TCP/IP協(xié)議鏈接矛辕,并無差別笑跛,只是由于http的相關(guān)規(guī)定、瀏覽器聊品、服務(wù)器等的限制飞蹂,導(dǎo)致在使用過程中體現(xiàn)出一些常見的不通點(diǎn);
二翻屈、詳述
1.關(guān)于冪等性
首先什么是冪等性陈哑?
Methods can also have the property of "idempotence" in that (aside from error or expiration issues) the side-effects of N > 0 identical requests is the same as for a single request.
在HTTP協(xié)議1.1中,有以上這段話,簡(jiǎn)而言之惊窖,即對(duì)于某個(gè)資源請(qǐng)求刽宪,無論請(qǐng)求1次或者N次,對(duì)于資源產(chǎn)生的副作用應(yīng)該是一樣的界酒。
從這個(gè)概念上就很容易理解圣拄,Get請(qǐng)求是冪等性的,無論請(qǐng)求多少次毁欣,返回的結(jié)果是一致的庇谆,而Post,請(qǐng)求一次則會(huì)產(chǎn)生一份新的資源凭疮,并不滿足冪等原則饭耳。需要注意的是,Put請(qǐng)求也是冪等性的执解。
PUT請(qǐng)求是我們不太常接觸到的HTTP請(qǐng)求協(xié)議之一寞肖,PUT請(qǐng)求之后完成對(duì)于資源的修改,由A修改為B衰腌,而多次請(qǐng)求新蟆,最終結(jié)果還是合并到B資源,從此角度理解桶唐,PUT請(qǐng)求設(shè)計(jì)師滿足冪等操作的栅葡。
2.關(guān)于TCP協(xié)議
兩者本質(zhì)都是基于TCP鏈接茉兰,這個(gè)其實(shí)很好理解尤泽,HTTP協(xié)議是面向于應(yīng)用層,而傳輸層則是TCP協(xié)議规脸,平時(shí)常說的socket則是對(duì)TCP/IP協(xié)議的封裝坯约,可以理解為一個(gè)API,通過API使用TCP/IP協(xié)議莫鸭。因此可以這么說闹丐,TCP/IP協(xié)議提供了一種通信能力,是HTTP協(xié)議的基石被因,而HTTP協(xié)議則是提供了一種具體的實(shí)現(xiàn)方式卿拴。
3.常見區(qū)別
那我們通常看到的Get和Post請(qǐng)求的區(qū)別梨与,大致區(qū)別如下:
1.參數(shù)傳遞:Get請(qǐng)求相關(guān)參數(shù)直接可以放置在url中堕花,而Post請(qǐng)求相關(guān)參數(shù)則封裝到http包體中;
2.傳輸數(shù)據(jù)大兄嘈:HTTP協(xié)議對(duì)Get和Post沒有明確限定缘挽,對(duì)于Get url長(zhǎng)度的限制取決于服務(wù)器和瀏覽器,對(duì)于Post數(shù)據(jù)包的大小取決于服務(wù)器;
3.數(shù)據(jù)包:GET產(chǎn)生一個(gè)TCP數(shù)據(jù)包;POST產(chǎn)生兩個(gè)TCP數(shù)據(jù)包壕曼。對(duì)于GET方式的請(qǐng)求苏研,瀏覽器會(huì)把http header和data一并發(fā)送出去,服務(wù)器響應(yīng)200(返回?cái)?shù)據(jù));而對(duì)于POST腮郊,瀏覽器先發(fā)送header摹蘑,服務(wù)器響應(yīng)100 continue,瀏覽器再發(fā)送data轧飞,服務(wù)器響應(yīng)200 ok(返回?cái)?shù)據(jù))纹蝴。【對(duì)于firefox瀏覽器一次發(fā)送Post兩個(gè)tcp包需要驗(yàn)證】踪少。
以上塘安。
三、參考文獻(xiàn)
1.http://www.cnblogs.com/weidagang2046/archive/2011/06/04/2063696.html援奢;
2.http://blog.csdn.net/happy_xiahuixiax/article/details/72859762兼犯;
3.https://yq.aliyun.com/articles/49156