HTTP中get和post的區別 GET 從指定的資源請求數據。 POST 向指定的資源提交要被處理的數據 | | GET | POST | | | | | | 後退/刷新 | 無害的 | 數據會被重新提交 | | 書簽 | 可收藏為書簽 | 不可收藏為書簽 | | 緩存 | 能被緩存 | 不能緩存 ...
HTTP中get和post的區別
- GET - 從指定的資源請求數據。
- POST - 向指定的資源提交要被處理的數據
GET | POST | |
---|---|---|
後退/刷新 | 無害的 | 數據會被重新提交 |
書簽 | 可收藏為書簽 | 不可收藏為書簽 |
緩存 | 能被緩存 | 不能緩存 |
編碼類型 | application | 多為二進位數據使用多重編碼 |
歷史 | 會保留參數在歷史中 | 不會保存在歷史數據中 |
對長度的限制 | 最大為2048 | 無限制 |
對數據類型的限制 | ASCII | 沒有限制,也可以為二進位數據 |
安全性 | 安全性較差,敏感數據,密碼請勿使用後 | 安全性較高 |
可見性 | 數據在URL中對所有人可見 | 數據不會限制在URL中 |
常見問題:
GET方法參數是固定的麽?
在約定中我們的參數是寫在?後面,用&分割,解析報文的過程是通過獲取TCP數據,用正則表達式等工具獲取Header和Body
GET的長度限制:
瀏覽器地址欄輸入的參數是有限的,Http協議中沒有長度限制,對URl的長度限制通常為瀏覽器或者伺服器的原因
POST比GET安全:
因為POST數據在地址欄中不可見, 但是安全只是相對的,因為HTTP在網路中是明文傳輸的,要想加密,就必須要用HTTPS
POST會產生2個TCP數據包?
POST會將Header和Body分開發送,但是HTTP協議中沒有明確會產生2個數據包,而且實際測試的時候也不會分開發送,所以分開發送只是部分瀏覽器和框架的請求方法,不屬於POST的必然行為。
請說一下GET和POST兩者的本質區別:
GET和POST本質上兩者沒有任何區別。他們都是HTTP協議中的請求方法。底層實現都是基於TCP/IP協議。上述的所謂區別,只是瀏覽器廠家根據約定,做得限制而已
HTTP請求,最初設定了八種方法。這八種方法本質上沒有任何區別。只是讓請求,更加有語義而已。
- OPTIONS 返回伺服器所支持的請求方法
- GET 向伺服器獲取指定資源
- HEAD 與GET一致,只不過響應體不返回,只返迴響應頭
- POST 向伺服器提交數據,數據放在請求體里
- PUT 與POST相似,只是具有冪等特性,一般用於更新
- DELETE 刪除伺服器指定資源
- TRACE 回顯伺服器端收到的請求,測試的時候會用到這個