HTTP 定義了與服務器交互的不同方法,最常用的有4種,Get、Post、Put、Delete,Put(增),Delete(刪),Post(改),Get(查),即增刪改查對於delete和put幾乎不用就不做介紹了:
1)Get, 它用於獲取信息,注意,他只是獲取、查詢數據,也就是說它不會修改服務器上的數據(在不考慮crsf的攻擊下),從這點來講,它是數據安全的,而稍后會提到的Post它是可以修改數據的,所以這也是兩者差別之一了。
2) Post,它是可以向服務器發送修改請求,從而修改服務器的,比方說,我們要在論壇上回貼、在博客上評論,這就要用到Post了,當然它也是可以僅僅獲取數據的
- GET - 從指定的資源請求數據。
- POST - 向指定的資源提交要被處理的數據
GET 方法
請注意,查詢字符串(名稱/值對)是在 GET 請求的 URL 中發送的:
/test/demo_form.asp?name1=value1&name2=value2
有關 GET 請求的其他一些注釋:
- GET 請求可被緩存
- GET 請求保留在瀏覽器歷史記錄中
- GET 請求可被收藏為書簽
- GET 請求不應在處理敏感數據時使用
- GET 請求有長度限制
- GET 請求只應當用於取回數據
-
POST 方法
請注意,查詢字符串(名稱/值對)是在 POST 請求的 HTTP 消息主體中發送的:
POST /test/demo_form.asp HTTP/1.1 Host: w3schools.com name1=value1&name2=value2
有關 POST 請求的其他一些注釋:
- POST 請求不會被緩存
- POST 請求不會保留在瀏覽器歷史記錄中
- POST 不能被收藏為書簽
- POST 請求對數據長度沒有要求
-
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正文
可明可密
安全
支持較大數據傳輸
修改數據
-
總結
用GET和POST訪問http資源---
·GET請求請提交的數據放置在HTTP請求協議頭(也就是url)中,而POST提交的數據則放在實體數據中,安全性比較高。
·GET方式提交的數據最多只能有1024字節,而POST則沒有此限制兩種方法,只是傳送數據的方式不同。根據不同的服務器規定的請求訪問方式,靈活的運行Get和Post。
-