安全測試 - HTTP 請求



HTTP 請求

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

  • 請求行

  • 零個或多個報頭(通用|請求|實體)欄位,後跟 CRLF

  • 空行(在 CRLF 之前沒有任何內容的行),表示報頭欄位的結束

  • 可選的訊息體

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

訊息請求行

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

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

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

請求方法

請求方法指示對由給定請求 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

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

Request-URI = "*" | absoluteURI | abs_path | authority
序號 方法和描述
1

當 HTTP 請求不應用於特定資源,而是應用於伺服器本身時,使用星號*。僅當方法不一定應用於資源時才允許。例如,OPTIONS * HTTP/1.1

2

當向代理伺服器發出 HTTP 請求時,使用absoluteURI。請求代理伺服器轉發請求或從有效的快取中為其提供服務,並返回響應。例如,GET https://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: https://www.w3.org/

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

請求報頭欄位

請求報頭欄位允許客戶端將有關請求以及客戶端本身的附加資訊傳遞給伺服器。這些欄位充當請求修改器,並且可以使用以下重要的請求報頭欄位,具體取決於需求:

  • 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>
http_protocol_basics.htm
廣告

© . All rights reserved.