最新的Web開發教程
 

HTTP方法:GET與POST


兩個最常用的HTTP方法是:GET和POST。


什麼是HTTP?

超文本傳輸協議(HTTP)的目的是使客戶端和服務器之間的通信。

HTTP效果作為客戶端和服務器之間的請求 - 響應協議。

Web瀏覽器可能是客戶端,並承載一個網站可能是服務器的計算機上的應用程序。

例如:客戶端(瀏覽器)提交的HTTP請求到服務器; 則服務器返回到客戶端的響應。 響應包含有關請求狀態信息,並也可含有所請求的內容。


兩個HTTP請求方法:GET和POST

為客戶端和服務器之間的請求 - 響應兩種常用的方法有:GET和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: w3ii.com
name1=value1&name2=value2

在POST請求的其他一些注意事項:

  • POST請求不會被緩存
  • POST請求不留在瀏覽器歷史記錄
  • POST請求,不可添加書籤
  • POST請求對數據長度沒有限制

比較GET與POST

下表比較了這兩種HTTP方法:GET和POST。

得到 POST
BACK按鈕/重裝 無害 數據將被重新提交(瀏覽器應該提醒的數據是將要被重新提交的用戶)
書籤 可以書籤 不能書籤
網頁快照 可被高速緩存 沒有緩存
編碼類型 應用程序/ x-WWW的形式,進行了urlencoded 應用程序/ x-WWW窗體-urlencoded或多部分/表單數據。 使用二進制數據編碼的多部分
歷史 參數保持在瀏覽器歷史記錄 參數不保存在瀏覽器歷史記錄
數據長度限制 是的,發送數據時,GET方法增加了數據的URL; 和URL的長度是有限的(最大URL長度為2048個字符) 無限制
關於數據類型限制 只允許ASCII字符 無限制。 二進制數據也允許
安全 相比POST GET不太安全,因為發送的數據是URL的一部分

發送密碼或其他敏感信息時,切勿使用GET!
POST比GET更安全一點,因為這些參數並不存儲在瀏覽器歷史記錄或Web服務器日誌
能見度 數據的所有人都可以在網址 數據不顯示在URL

其他HTTP請求方法

下表列出了一些其他的HTTP請求方法:

方法 描述
HEAD 同GET,但僅返回HTTP頭,沒有文檔主體
PUT 上載到指定的URI的表示
DELETE 刪除指定的資源
OPTIONS 返回的HTTP方法服務器支持
CONNECT 請求連接到一個透明的TCP / IP轉換隧道