HTTP請求

HTTP客戶端以請求消息的形式向伺服器發送HTTP請求,其中包括以下格式 -

  • 請求行。
  • 零個或多個標頭(常規|請求|實體)字段後跟CRLF。
  • 空行(CRLF前面沒有任何內容的行),表示標題字段的結尾。
  • 可選的消息主體。

以下部分解釋了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 它沿著目標資源的路徑執行消息環回測試。

請求URI

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
  • Request-URI的最常見形式是用於標識源伺服器或網關上的資源。例如,希望直接從源伺服器檢索上述資源的客戶端將創建到主機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請求,從xuhuhu.com上運行的web伺服器獲取hello.html頁面 -

GET /hello.html HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.xuhuhu.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.xuhuhu.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.xuhuhu.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>

上一篇: HTTP協議基礎 下一篇: HTTPS協議基礎