HTTP 協議中GET和POST到底有哪些區別(轉)

HTTP 定義了與服務器交互的不一樣方法,最經常使用的有4種,Get、Post、Put、Delete,若是我換一下順序就好記了,Put(增),Delete(刪),Post(改),Get(查),即增刪改查,下面簡單敘述一下:

1)Get, 它用於獲取信息,注意,他只是獲取、查詢數據,也就是說它不會修改服務器上的數據,從這點來說,它是數據安全的,而稍後會提到的Post它是能夠修改數據的,因此這也是二者差異之一了。html

2) Post,它是能夠向服務器發送修改請求,從而修改服務器的,比方說,咱們要在論壇上回貼、在博客上評論,這就要用到Post了,固然它也是能夠僅僅獲取數據的。瀏覽器

3)Delete 刪除數據。能夠經過Get/Post來實現。用的很少,暫很少寫,之後擴充。安全

4)Put,增長、放置數據,能夠經過Get/Post來實現。用的很少,暫很少寫,之後擴充。服務器

下面簡述一下Get和Post區別:oop

1) GET請求的數據是放在HTTP包頭中的,也就是URL以後,一般是像下面這樣定義格式的,(而Post是把提交的數據放在HTTP正文中的)。大數據

login.action?name=hyddd&password=idontknow&verify=%E4%BD%E5%A5%BD編碼

a,以 ? 來分隔URL和數據; 加密

b,以& 來分隔參數;spa

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正文

可明可密

安全

支持較大數據傳輸

修改數據

 

 

轉自
http://blog.csdn.net/wangzhilife/article/details/12440089

 

客戶端get請求解決亂碼問題
客戶端經過Get方式向服務器發送中文數據,需先對中文數據進行轉碼操做
URLEncoder.encode(name,"utf-8")
服務端解決亂碼
new String(name.getBytes("iso-8859-1"),"utf-8")//字符轉碼操做,防止中文亂碼
response.setContentType("text/html;charset=utf-8")//顯示轉碼
相關文章
相關標籤/搜索