1、從主流瀏覽器的實現角度看
下面的對比表格摘自: w3school -- HTTP 方法:GET 對比 POST
2、從 RFC 規范的(Safe-安全、Idempotent-冪等、Cacheable-可緩存性、語義)角度看
- GET 安全;POST 不安全
- GET 冪等;POST 不冪等
- GET 可緩存;POST 不可緩存
- GET 用於信息獲取;POST 表示可能修改變服務器上的資源的請求
這里的安全是指,GET 只讀服務器數據不會修改; 冪等簡單理解就是每次請求結果和產生的影響都一樣。
3、注意問題
長度限制:http 協議並未規定 get 和post 的長度限制
get 的最大長度限制是因為瀏覽器和 web 服務器限制了 URL 的長度
不同的瀏覽器和web服務器,限制的最大長度不一樣
超出了最大長度,大部分的服務器直接截斷,有些服務器會報414錯誤
安全:這里的安全指使用過程中的安全
GET 是通過 URL 方式請求,可以直接看到,明文傳輸; POST 參數通過 header 傳輸,同樣是明文
瀏覽器會緩存和記錄 GET 請求及參數,不緩存 POST 的請求的參數(如參數中包含敏感信息可能被其他從瀏覽器的緩存和瀏覽記錄獲取)
參考:
- https://www.zhihu.com/question/28586791
- https://www.cnblogs.com/hyddd/archive/2009/03/31/1426026.html
- Java 自學指南
- Java 面試題 H5
- Java 面試題小程序