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