HTTP - 請求



HTTP 客戶端以請求訊息的形式向伺服器傳送 HTTP 請求,該請求訊息包含以下格式

  • A Request-line
  • Zero or more header (General|Request|Entity) fields followed by CRLF
  • An empty line (i.e., a line with nothing preceding the CRLF) indicating the end of the header fields
  • Optionally a message-body

以下部分解釋了 HTTP 請求訊息中使用的每個實體。

請求行

請求行以方法標記開頭,後跟請求 URI 和協議版本,並以 CRLF 結尾。這些元素由空格 SP 字元分隔。

Request-Line = Method SP Request-URI SP HTTP-Version CRLF

讓我們討論請求行中提到的每個部分。

請求方法

請求的方法指示要對由給定請求 URI標識的資源執行的方法。方法區分大小寫,應始終以大寫形式提及。下表列出了 HTTP/1.1 中所有支援的方法。

序號 方法和描述
1 GET

GET 方法用於使用給定的 URI 從給定的伺服器檢索資訊。使用 GET 的請求應僅檢索資料,並且不應對資料產生其他影響。

2 HEAD

與 GET 相同,但它僅傳輸狀態行和報頭部分。

3 POST

POST 請求用於將資料傳送到伺服器,例如,使用 HTML 表單傳送客戶資訊、檔案上傳等。

4 PUT

用上傳的內容替換目標資源的所有當前表示形式。

5 DELETE

刪除 URI 給出的目標資源的所有當前表示形式。

6 CONNECT

建立到由給定 URI 標識的伺服器的隧道。

7 OPTIONS

描述目標資源的通訊選項。

8 TRACE

執行訊息迴圈回測試以及目標資源的路徑。

請求 URI

請求 URI 是統一資源識別符號,用於標識要對其應用請求的資源。以下是指定 URI 最常用的形式

Request-URI = "*" | absoluteURI | abs_path | authority
 
序號 方法和描述
1 當 HTTP 請求不適用於特定資源,而是適用於伺服器本身時,使用星號*,並且僅當使用的方法不一定適用於資源時才允許。例如

OPTIONS * HTTP/1.1

2 當對代理伺服器發出 HTTP 請求時,使用absoluteURI。請求代理轉發請求或從有效快取中提供服務,並返回響應。例如

GET http://www.w3.org/pub/WWW/TheProject.html HTTP/1.1

3 請求 URI 的最常見形式是用於標識源伺服器或閘道器上的資源的形式。例如,希望直接從源伺服器檢索資源的客戶端將建立到主機“www.w3.org”的埠 80 的 TCP 連線,併發送以下行

GET /pub/WWW/TheProject.html HTTP/1.1

Host: www.w3.org

請注意,絕對路徑不能為空;如果原始 URI 中不存在任何路徑,則必須將其指定為“/”(伺服器根目錄)。

請求報頭欄位

我們將在單獨的章節中學習通用報頭和實體報頭,屆時我們將學習 HTTP 報頭欄位。現在,讓我們檢查一下請求報頭欄位是什麼。

請求報頭欄位允許客戶端將有關請求以及客戶端本身的附加資訊傳遞給伺服器。這些欄位充當請求修改器。以下是一些可以根據需要使用的重要請求報頭欄位的列表

  • 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 請求,以從執行在 tutorialspoint.com 上的 Web 伺服器中獲取hello.htm頁面

GET /hello.htm HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.tutorialspoint.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.tutorialspoint.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 將用於處理傳遞的資料,並相應地返回響應。這裡content-type告訴伺服器傳遞的資料是簡單的 Web 表單資料,length將是放入訊息正文的資料的實際長度。以下示例顯示瞭如何將純 XML 傳遞到您的 Web 伺服器

POST /cgi-bin/process.cgi HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.tutorialspoint.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>
廣告

© . All rights reserved.