GET和POST是網(wǎng)絡(luò)編程中块请,用的最多的請求方式了娜氏,但是這兩種方式有什么區(qū)別,有不少人都不一定能答的上來墩新∶趁郑看了下面這張圖就很明白了。
由于簡書的文章寬度限制海渊,折騰了半天绵疲,也沒法讓用markdown寫的表格完美顯示,只好用了圖片.....
其實(shí)GET和POST在本質(zhì)上肯定是沒太大區(qū)別臣疑。通晨看到的,POST攜帶body而GET沒有body讯沈,并不是他們的區(qū)別郁岩。因?yàn)镚ET請求也可以攜帶body,只是看服務(wù)器是否處理了芙盘。
上面的表格中驯用,到最后還沒有結(jié)束脸秽。因?yàn)樗鼈冞€有另外一個區(qū)別:
在瀏覽器中儒老,GET請求產(chǎn)生一個TCP數(shù)據(jù)包;POST請求產(chǎn)生兩個TCP數(shù)據(jù)包记餐。
對于GET方式的請求驮樊,瀏覽器會把header和data一并發(fā)送出去,服務(wù)器響應(yīng)200(返回數(shù)據(jù))片酝;
而對于POST囚衔,瀏覽器先發(fā)送header,服務(wù)器響應(yīng)100后雕沿,continue练湿,瀏覽器再發(fā)送data給服
務(wù)器,這樣就會發(fā)送2次包审轮。所以肥哎,POST會相對慢一些,不過POST利用了TCP的傳輸校驗(yàn)疾渣,使得
POST請求更`安全`一些篡诽。
不過因?yàn)椴煌臑g覽器的處理方式不同,POST并不一定都會發(fā)送2次包榴捡。比如說Firefox在做POST
請求的時候杈女,就只會發(fā)送一次包.
2次 != 2個
不過也不存在POST就一定比GET安全的說法,對于移動端應(yīng)用來說达椰,POST和GET的區(qū)別可以說微乎其微翰蠢。想要絕對的安全也是不可能的,連HTTPS都不能防止中間人攻擊的啰劲。
如果用抓包工具躏筏,比如charles、wireshark等截獲網(wǎng)絡(luò)請求呈枉,所有的請求信息就都暴露了趁尼。也許你會發(fā)現(xiàn)HTTPS的內(nèi)容都是亂碼,但是這并不是說明HTTPS就一定安全猖辫。如果你在你手機(jī)上安裝一個charles的SSL證書酥泞,然后再用charles去抓包,會發(fā)現(xiàn)HTTPS的請求也變成明文了啃憎。
但是HTTPS還是能防止中間人攻擊的芝囤,如果你購買了CA機(jī)構(gòu)的證書放到server端,然后在client端對證書進(jìn)行校驗(yàn)辛萍,這樣charles等中間人就無法用自己的證書進(jìn)行加解密悯姊,也就無法對你的請求進(jìn)行修改來偽裝成正常的client。
曾經(jīng)聽到有人說socket沒辦法攔截贩毕,這是因?yàn)槟阌玫墓ぞ撸ū热缯fcharles)沒有這樣的功能悯许。如果你用wireshark這樣功能強(qiáng)大的工具,會發(fā)現(xiàn)所有的請求信息在你的眼前都暴露無遺辉阶。
所以說只要是通過網(wǎng)絡(luò)傳輸?shù)男畔⒕蜎]有絕對的安全先壕。
其他 HTTP 請求方法
方法 | 描述 |
---|---|
HEAD | 與GET方法一樣,都是向服務(wù)器發(fā)出指定資源的請求谆甜。但是垃僚,服務(wù)器在響應(yīng)HEAD請求時只回傳資源的摘要信息。 |
PUT | 向指定資源位置上傳其最新內(nèi)容规辱,PUT方法是冪等的方法谆棺。通過該方法客戶端可以將指定資源的最新數(shù)據(jù)傳送給服務(wù)器取代指定的資源的內(nèi)容。 |
DELETE | 請求用于請求服務(wù)器刪除所請求URI(統(tǒng)一資源標(biāo)識符罕袋,Uniform Resource Identifier)所標(biāo)識的資源改淑。DELETE請求后指定資源會被刪除,DELETE方法也是冪等的炫贤。 |
OPTIONS | 與HEAD類似溅固,一般也是用于客戶端查看服務(wù)器的性能。 這個方法會請求服務(wù)器返回該資源所支持的所有HTTP請求方法兰珍,該方法會用'*'來代替資源名稱侍郭,向服務(wù)器發(fā)送OPTIONS請求,可以測試服務(wù)器功能是否正常。 |
CONNECT | HTTP/1.1協(xié)議預(yù)留的亮元,能夠?qū)⑦B接改為管道方式的代理服務(wù)器猛计。通常用于SSL加密服務(wù)器的鏈接與非加密的HTTP代理服務(wù)器的通信。 |
PATCH | 與PUT請求類似爆捞,同樣用于資源的更新奉瘤。但PATCH一般用于資源的部分更新,而PUT一般用于資源的整體更新煮甥。當(dāng)資源不存在時盗温,PATCH會創(chuàng)建一個新的資源,而PUT只會對已在資源進(jìn)行更新成肘。 |
TRACE | 請求服務(wù)器回顯其收到的請求信息卖局,主要用于測試或診斷。 |