HTTP 協(xié)議中GET和POST到底有哪些區(qū)別
HTTP 定義了與服務器交互的不同方法,最常用的有4種,Get、Post、Put、Delete,如果我換一下順序就好記了,Put(增),Delete(刪),Post(改),Get(查),即增刪改查,下面簡單敘述一下:
1)Get, 它用于獲取信息,注意,他只是獲取、查詢數(shù)據(jù),也就是說它不會修改服務器上的數(shù)據(jù),從這點來講,它是數(shù)據(jù)安全的,而稍后會提到的Post它是可以修改數(shù)據(jù)的,所以這也是兩者差別之一了。
2) Post,它是可以向服務器發(fā)送修改請求,從而修改服務器的,比方說,我們要在論壇上回貼、在博客上評論,這就要用到Post了,當然它也是可以僅僅獲取數(shù)據(jù)的。
3)Delete 刪除數(shù)據(jù)。可以通過Get/Post來實現(xiàn)。用的不多,暫不多寫,以后擴充。
4)Put,增加、放置數(shù)據(jù),可以通過Get/Post來實現(xiàn)。用的不多,暫不多寫,以后擴充。
下面簡述一下Get和Post區(qū)別:
1) GET請求的數(shù)據(jù)是放在HTTP包頭中的,也就是URL之后,通常是像下面這樣定義格式的,(而Post是把提交的數(shù)據(jù)放在HTTP正文中的)。
login.action?name=hyddd&password=idontknow&verify=%E4%BD%E5%A5%BD
a,以 ? 來分隔URL和數(shù)據(jù);
b,以& 來分隔參數(shù);
c,如果數(shù)據(jù)是英文或數(shù)字,原樣發(fā)送;
d,如果數(shù)據(jù)是中文或其它字符,則進行BASE64編碼。
2)GET提交的數(shù)據(jù)比較少,最多1024B,因為GET數(shù)據(jù)是附在URL之后的,而URL則會受到不同環(huán)境的限制的,比如說IE對其限制為2K+35,而POST可以傳送更多的數(shù)據(jù)(理論上是沒有限制的,但一般也會受不同的環(huán)境,如瀏覽器、操作系統(tǒng)、服務器處理能力等限制,IIS4可支持80KB,IIS5可支持100KB)。
3)Post的安全性要比Get高,因為Get時,參數(shù)數(shù)據(jù)是明文傳輸?shù)模沂褂肎ET的話,還可能造成Cross-site request forgery攻擊。而POST數(shù)據(jù)則可以加密的,但GET的速度可能會快些。
所以綜上幾點,總結成下表:
|
操作方式 |
數(shù)據(jù)位置 |
明文密文 |
數(shù)據(jù)安全 |
長度限制 |
應用場景 |
|
GET |
HTTP包頭 |
明文 |
不安全 |
長度較小 |
查詢數(shù)據(jù) |
|
POST |
HTTP正文 |
可明可密 |
安全 |
支持較大數(shù)據(jù)傳輸 |
修改數(shù)據(jù)
|
浙公網(wǎng)安備 33010602011771號