一、get和post區別
1.url可見性
get傳參方式是通過地址欄URL傳遞,是可以直接看到get傳遞的參數,post傳參方式參數URL不可見,get把請求的數據在URL后通過?連接,通過&進行參數分割。psot將從參數存放在HTTP的包體內
2.傳輸數據大小
get傳遞數據是通過URL進行傳遞,對傳遞的數據長度是受到URL大小的限制,URL最大長度是2048個字符。post沒有長度限制
3.后退頁面
get后退不會有影響,post后退會重新進行提交
4.緩存
get請求可以被緩存,post不可以被緩存
5.編碼方式
get請求只URL編碼,post支持多種編碼方式
6.歷史記錄
get請求的記錄會留在歷史記錄中,post請求不會留在歷史記錄
7 字符類型
get只支持ASCII字符,post沒有字符類型限制
二、post相比較get傳參方式的優點
1.安全性比get傳參方式好:
a.存在於HTTP包中,一般不會直接被查找到
b.post不會被瀏覽器進行緩存
c.不會留在歷史記錄中
(並不代表post一定安全,因為在HTTP下都是明文傳輸,post仍然可以被查找到,增加安全性最好使用https協議)
2.post沒有字符和編碼的限制,能發送的數據類型更多
3.post傳送數據沒有大小限制,比get可以發送的更多的數據
post的缺點:速度比get傳輸慢,get的效率更高
三、為什么get的效率比post高
1.post在接收返回來的數據會先將請求頭發送給服務器確認,然后才真正的發送數據,(相當於第一次先向服務器打個招呼,第二次才將數據真正的發過來,get則是直接發送數據。專業的說法是,get產生一個TCP數據包,post產生兩個TCP。數據包但並不是所有的瀏覽器post都會請求兩次,火狐瀏覽器就會請求一次)總結起來就是請求的過程比get更多
2.get會將數據進行緩存