GET和POST區別

一、傳輸數據方式

二、安全性

POST將請求數據放在請求體中,GET放在URL中,HTTP是明文傳輸,所以從攻擊角度,爲了安全要用HTTPS協議

三、請求數據大小

在HTTP協議中,並未對GET請求限制大小,是瀏覽器限制,並且不同瀏覽器限制不同。
POST無此限制,但理論上,IIS4中最大量爲80KB,IIS5中爲100KB。
爲什麼GET瀏覽器會限制?
URL這種東西必須當作一個整體看待,無法一塊一塊處理,於是就處理一個請求時必須分配一整塊足夠大的內存。如果URL太長,而併發又很高,就容易擠爆服務器的內存;

四、緩存

  • GET:可以看做DB的select操作,不會對服務端數據產生影響。可以做緩存(客戶端、代理服務器Nginx、服務器Etag)
  • POST:可以看做DB的update、insert、select,是必須訪問數據庫行爲,所以不做緩存。

五、請求次數

http 100-continue用於客戶端在發送POST數據給服務器前,徵詢服務器情況,看服務器是否處理POST的數據,如果不處理,客戶端則不上傳POST數據,如果處理,則POST上傳數據。在現實應用中,通過在POST大數據時,纔會使用100-continue協議(加入頭{“Expect”:“100-continue”})。
【但這並不是協議規定的,所以也可以像GET直接發數據】

六、管道傳輸

  • get支持管道化傳輸,而post不支持
    在長連接中,是順序請求和響應:請求1->響應1->請求2>響應2
    管道化:請求1 -> 請求2 -> 請求3 -> 響應1 -> 響應2 -> 響應3
    在這裏插入圖片描述
    HTTP1.1要求服務器支持管線化,但並不要求服務器對響應進行管線化處理,只是要求對於管線化的請求不失敗,而且現在服務端和代理程序對管線化的支持並不好,Chrome和Firefox默認並未開啓管線化支持。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章