天天看點

HTTP中GET與POST的差別(新了解)

網上的标準答案

GET在浏覽器回退時是無害的,而POST會再次送出請求。

GET産生的URL位址可以被Bookmark,而POST不可以。

GET請求會被浏覽器主動cache,而POST不會,除非手動設定。

GET請求隻能進行url編碼,而POST支援多種編碼方式。

GET請求參數會被完整保留在浏覽器曆史記錄裡,而POST中的參數不會被保留。

GET請求在URL中傳送的參數是有長度限制的,而POST麼有。 對參數的資料類型,

GET隻接受ASCII字元,而POST沒有限制。

GET比POST更不安全,因為參數直接暴露在URL上,是以不能用來傳遞敏感資訊。

GET參數通過URL傳遞,POST放在Request body中。

有個大神補充的一些

HTTP的底層是TCP/IP。是以GET和POST的底層也是TCP/IP,也就是說,GET/POST都是TCP連結。GET和POST能做的事情是一樣一樣的。你要給GET加上request body,給POST帶上url參數,技術上是完全行的通的。 

HTTP隻是個行為準則,而TCP才是GET和POST怎麼實作的基本。

GET和POST還有一個重大差別,簡單的說:

GET産生一個TCP資料包;POST産生兩個TCP資料包。

長的說:

對于GET方式的請求,浏覽器會把http header和data一并發送出去,伺服器響應200(傳回資料);

而對于POST,浏覽器先發送header,伺服器響應100 continue,浏覽器再發送data,伺服器響應200 ok(傳回資料)。