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 中。
二、分析一下:
get 請求參數在 url 地址上,直接暴露,post 請求的參數放 body 部分,按 F12也直接暴露了,所以沒啥安全性可言
GET 參數通過 URL 傳遞,POST 放在 Request body 中”這個其實也不准,post請求也可以沒 body,也可以在 url 傳遞呢?
三、總結:
GET 和 POST 有一個重大區別,簡單的說:
GET 產生一個 TCP 數據包;POST 產生兩個 TCP 數據包。
長的說:
對於 GET 方式的請求,瀏覽器會把 http header 和 data 一並發送出去,服務器響應 200(返回數據);
而對於 POST,瀏覽器先發送 header,服務器響應 100 continue,瀏覽器再發送data,服務器響應 200 ok(返回數據)。
詳情可以參考這篇,寫的挺好的GET 和 POST 兩種基本請求方法的區別
