HTTP用戶端以請求訊息的形式向伺服器傳送HTTP請求,其中包括以下格式 -
以下部分解釋了HTTP訊息中使用的每個實體。
Request-Line
以方法標記開頭,後跟Request-URI
,協定版本,以CRLF結尾。元素由空格SP字元分隔。
Request-Line = Method SP Request-URI SP HTTP-Version CRLF
下面我們將討論Request-Line
中提到的每個部分。
請求方法指示對由給定Request-URI
標識的資源執行的方法。該方法區分大小寫,應始終以大寫形式提及。HTTP/1.1
支援以下方法 -
編號 | 方法 | 描述 |
---|---|---|
1 | GET | 它用於使用給定的URI從給定伺服器檢索資訊。使用GET 的請求應僅檢索資料,並且不應對資料產生其他影響。 |
2 | HEAD | 它與GET相同,但僅傳輸狀態行和檔頭部分。 |
3 | POST | 它用於將資料傳送到伺服器。例如,使用HTML表單的客戶資訊,檔案上載等。 |
4 | PUT | 它用上傳的內容替換目標資源的所有當前表示。 |
5 | DELETE | 它刪除URI給出的目標資源的所有當前表示。 |
6 | CONNECT | 它建立到由給定URI標識的伺服器的通道。 |
7 | OPTIONS | 它描述了目標資源的通訊選項。 |
8 | TRACE | 它沿著目標資源的路徑執行訊息環回測試。 |
Request-URI是統一資源識別符號,用於標識必須應用請求的資源。以下是指定URI的最常用表單 -
Request-URI = "*" | absoluteURI | abs_path | authority
*
- 當HTTP請求不適用於特定資源但使用伺服器本身時,使用星號*
。僅當方法不一定適用於資源時才允許。例如,OPTIONS * HTTP/1.1
absoluteURI
- 在向代理發出HTTP請求時使用absoluteURI
。請求代理轉發請求或從有效快取中為其提供服務,並返回響應。例如,GET https://www.w3.org/pub/WWW/TheProject.html HTTP / 1.1
www.w3.org
的埠80的TCP連線並行送線路 - GET /pub/WWW/TheProject.html HTTP/1.1
request-header
欄位允許用戶端將有關請求以及用戶端本身的其他資訊傳遞給伺服器。這些欄位充當請求修飾符,並且可以使用以下重要的Request-header
欄位,可根據要求使用 -
Accept-Charset
Accept-Encoding
Accept-Language
Authorization
Expect
From
Host
If-Match
If-Modified-Since
If-None-Match
If-Range
If-Unmodified-Since
Max-Forwards
Proxy-Authorization
Range
Referer
TE
User-Agent
您可以引入自定義欄位,以防您要編寫自己的自定義用戶端和Web伺服器。
請求訊息範例
現在把它們放在一起形成一個HTTP請求,從tw511.com
上執行的web伺服器獲取hello.html
頁面 -
GET /hello.html HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.tw511.com
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
這裡沒有向伺服器傳送任何請求資料,因為我們從伺服器獲取指定的一個HTML頁面。Connection
是一個通用檔頭,其餘所有檔頭都是請求檔頭。以下是使用請求訊息正文將表單資料傳送到伺服器的另一個範例 -
POST /cgi-bin/process.cgi HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.tw511.com
Content-Type: application/x-www-form-urlencoded
Content-Length: length
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
licenseID = string&content = string&/paramsXML = string
這裡,給定的URL /cgi-bin/process.cgi
用於處理傳遞的資料,因此返回響應。內容型別告訴伺服器傳遞資料的是簡單的Web表單資料,長度是放在訊息正文中的資料的實際長度。以下範例顯示了如何將XML傳遞到Web伺服器 -
POST /cgi-bin/process.cgi HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.tw511.com
Content-Type: text/xml; charset = utf-8
Content-Length: length
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
<?xml version = "1.0" encoding = "utf-8"?>
<string xmlns = "http://clearforest.com/">string</string>