前端7班_yupu
一、post和get方式的區(qū)別??
1. GET請(qǐng)求的數(shù)據(jù)會(huì)附在URL之后(就是把數(shù)據(jù)放置在HTTP協(xié)議頭中),以?分割URL和傳輸數(shù)據(jù),
參數(shù)之間以&相連
login.actionname=hyddd&password=idontknow&verify=%E4%BD%A0%E5%A5%BD。如果數(shù)
據(jù)是英文字母/數(shù)字,原樣發(fā)送,如果是空格,轉(zhuǎn)換為+,如果是中文/其他字符,則直接把字符串
用BASE64加密,得出如:%E4%BD%A0%E5%A5%BD,其中%XX中的XX為該符號(hào)以16進(jìn)制表示的
ASCII。
? ? ?POST把提交的數(shù)據(jù)則放置在是HTTP包的包體中。
2. Get一般用于提交少量數(shù)據(jù),Post用于提交大量數(shù)據(jù)
3. Get最多提交1k數(shù)據(jù),瀏覽器的限制。Post理論上無限制,受服務(wù)器限制?
4. Get提交的數(shù)據(jù)在瀏覽器歷史記錄中,安全性不好
? ? ?這里所說的安全性和上面GET提到的“安全”不是同個(gè)概念。上面“安全”的含義僅僅是不作數(shù)據(jù)修
改,而這里安全的含義是真正的Security的含義,比如:通過GET提交數(shù)據(jù),用戶名和密碼將明文
出現(xiàn)在URL上,因?yàn)?1)登錄頁面有可能被瀏覽器緩存,(2)其他人查看瀏覽器的歷史紀(jì)錄,那么別
人就可以拿到你的賬號(hào)和密碼。
二、什么時(shí)候用get 什么時(shí)候用post?
若符合下列任一情況,則用POST方法:
* 請(qǐng)求的結(jié)果有持續(xù)性的副作用,例如,數(shù)據(jù)庫內(nèi)添加新的數(shù)據(jù)行。
* 若使用GET方法,則表單上收集的數(shù)據(jù)可能讓URL過長(zhǎng)。
* 要傳送的數(shù)據(jù)不是采用7位的ASCII編碼。、
若符合下列任一情況,則用GET方法:
* 請(qǐng)求是為了查找資源,HTML表單數(shù)據(jù)僅用來幫助搜索。
* 請(qǐng)求結(jié)果無持續(xù)性的副作用。
* 收集的數(shù)據(jù)及HTML表單內(nèi)的輸入字段名稱的總長(zhǎng)不超過1024個(gè)字符。
總之,Get是向服務(wù)器發(fā)索取數(shù)據(jù)的一種請(qǐng)求,而Post是向服務(wù)器提交數(shù)據(jù)的一種請(qǐng)求,在
FORM(表單)中,Method默認(rèn)為"GET",實(shí)質(zhì)上,GET和POST只是發(fā)送機(jī)制不同,并不是一個(gè)取一
個(gè)發(fā)!
參考:
1、什么時(shí)候用GET?什么時(shí)候用POST? - perny的專欄
- 博客頻道 - CSDN.NET
2、淺談HTTP中Get與Post的區(qū)別 - 51CTO.COM
3、饑人谷課件