1. 程式人生 > >HTTP請求和響應2:方法(Method)

HTTP請求和響應2:方法(Method)

trace 行處理 診斷 ack 中間 delete nds 最優 eas

方法表明了client希望server對資源運行的動作。經常使用的方法包含:GET、HEAD、POST、PUT、TRACE、OPTIONS和DELETE,每一個server能夠實現這些方法中的部分或者所有。以下將對這些方法做一個具體的介紹。

GET

通經常使用於請求server發送某個資源。HTTP/1.1要求server必須實現該方法,以下是一個HTTP請求:
GET /seasonal/index-fall.html HTTP/1.1
Host: www.joes-hardware.com
Accept: *
響應報文例如以下:
HTTP/1.1 200 OK
Content-Type: text/html
Context-Length: 617

//body

HEAD

HEAD和GET類似,僅僅是server的響應中僅僅返回首部(沒有實體部分),一般用於:
1)在不獲取資源的情況下了解資源的狀況。
2)通過查看響應中的狀態碼,看看某個對象是否存在;
3)通過查看首部。測試資源是否被改動了。


HEAD返回的首部應該和GET返回的首部全然同樣。

PUT

向server寫入文檔。就是讓server用請求的主體部分來創建一個由所請求的URL命名的新文檔,或者假設那個URL已經存在的話,就用這個主體來替代它。
請求報文:
PUT /product-list.txt HTTP/1.1
Host: www.joes-hardware.com
Content-type: text/plain
Content-length: 34

//body
響應報文:
HTTP/1.1 201 Created
Location: http://www.joes-hardware.com/product-list.txt
Content-type: text/plain
Context-length: 47

http://www.joes-hardware.com/product-list.txt

POST

POST通經常使用來支持HTML的表單,表單中填好的數據被發送到server。server將其交給相應的程序進行處理。
請求報文:
POST /inventory-check.cgi HTTP/1.1
Host: www.joes-hardware.com
Content-type: text/plain
Content-length: 18

item-bandsaw 2647
服務端交由相應程序處理後,發送響應報文:
HTTP/1.1 200 OK
Content-type: text/plain
Context-length: 37

The bandsaw model 2647 is in stock!

TRACE

client發起一個請求,請求可能會穿過防火墻、代理、網關或其它一些應用程序。每一個中間節點都可能會改動原始的HTTP請求。

TRACE請求會在目地server端發起一個“環回”診斷,行程最後一站的server會彈回一條TRACE響應,並在響應主體中帶上收到的原始請求報文。這樣client能夠診斷原始報文是否被改動過。
請求報文:

TRACE /product-list.txt HTTP/1.1
Accept:*
Host: www.joes-hardware.com
報文經過代理server後:
TRACE /product-list.txt HTTP/1.1
Host: www.joes-hardware.com
Accept: *
Via: 1.1 proxy3.company.com
server彈回的TRACE響應:
HTTP/1.1 200 OK
Content-type: text/plain
Content-length: 96

TRACE /product-list.txt HTTP/1.1
Host: www.joes-hardware.com
Accept: *
Via: 1.1 proxy3.company.com
TRACE響應經過代理server後:
HTTP/1.1 200 OK
Content-type: text/plain
Content-length: 96
Via: 1.1 proxy3.company.com

TRACE /product-list.txt HTTP/1.1
Host: www.joes-hardware.com
Accept: *
Via: 1.1 proxy3.company.com
TRACE方法主要用於診斷。它基本的缺陷是它假定中間應用程序對各種不同類型請求(GET、HEAD、POST等)的處理都是同樣的,假設實際情況不同,那麽診斷將不準確。


OPTIONS

OPTIONS方法請求Webserver告知其支持的各種功能,這為client應用程序提供了一種手段。使其不用實際訪問那些資源就能判定訪問各種資源的最優方式。
請求報文:
OPTIONS * HTTP/1.1
Host: www.joes-hardware.com
Accept: *
響應報文:
HTTP/1.1 200 OK
Allow: GET, POST, PUT, OPTIONS
Context-length: 0

DELETE

DELETE方法用於請server刪除請求URL所指定的資源。


請求報文:

DELETE /product-list.txt HTTP/1.1
Host: www.joes-hardware.com
響應報文:
HTTP/1.1 200 OK
Content-type: text/plain
Content-length: 54

//響應消息

擴展方法

HTTP被設計成字段可擴展的,擴展方法指的是沒有在HTTP/1.1中定義的方法,這些方法為開發人員提供了一種擴展這些HTTP服務能力的手段。



HTTP請求和響應2:方法(Method)