GET | POST | |
---|---|---|
後退/刷新 | 無害的 | 數據會被從新提交 |
書籤 | 可收藏爲書籤 | 不可收藏爲書籤 |
緩存 | 能被緩存 | 不能緩存 |
編碼類型 | application | 多爲二進制數據使用多重編碼 |
歷史 | 會保留參數在歷史中 | 不會保存在歷史數據中 |
對長度的限制 | 最大爲2048 | 無限制 |
對數據類型的限制 | ASCII | 沒有限制,也能夠爲二進制數據 |
安全性 | 安全性較差,敏感數據,密碼請勿使用後 | 安全性較高 |
可見性 | 數據在URL中對全部人可見 | 數據不會限制在URL中 |
GET方法參數是固定的麼?正則表達式
在約定中咱們的參數是寫在?後面,用&分割,解析報文的過程是經過獲取TCP數據,用正則表達式等工具獲取Header和Body瀏覽器
GET的長度限制:緩存
瀏覽器地址欄輸入的參數是有限的,Http協議中沒有長度限制,對URl的長度限制一般爲瀏覽器或者服務器的緣由安全
POST比GET安全:服務器
由於POST數據在地址欄中不可見, 可是安全只是相對的,由於HTTP在網絡中是明文傳輸的,要想加密,就必需要用HTTPS網絡
POST會產生2個TCP數據包?app
POST會將Header和Body分開發送,可是HTTP協議中沒有明確會產生2個數據包,並且實際測試的時候也不會分開發送,因此分開發送只是部分瀏覽器和框架的請求方法,不屬於POST的必然行爲。框架
請說一下GET和POST二者的本質區別:工具
GET和POST本質上二者沒有任何區別。他們都是HTTP協議中的請求方法。底層實現都是基於TCP/IP協議。上述的所謂區別,只是瀏覽器廠家根據約定,作得限制而已post
HTTP請求,最初設定了八種方法。這八種方法本質上沒有任何區別。只是讓請求,更加有語義而已。