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請求消息中使用的每個實體。
Request-Line
請求行以方法標記開頭,後跟請求URI和協議版本,以CRLF結尾。元素由空格SP字符分隔。
Request-Line = Method SP Request-URI SP HTTP-Version CRLF
讓我們討論請求行中提到的每個部分。
Request Method
請求方法指示要在由給定的請求URI標識的資源上執行的方法。該方法區分大小寫,應始終以大寫字母提及。下表列出了HTTP/1.1中支持的所有方法。
S.N. | Method and Description |
---|---|
1 | GET GET方法用於使用給定的URI從給定的伺服器檢索信息。使用GET的請求應該只檢索數據,不應該對數據有其他影響。 |
2 | HEAD 與GET相同,但它只傳輸狀態行和標題部分。 |
3 | POST POST請求用於使用HTML表單向伺服器發送數據,例如客戶信息、文件上載等。 |
5 | DELETE 刪除由URI給定的目標資源的所有當前表示形式。 |
6 | CONNECT 建立到由給定URI標識的伺服器的隧道。 |
7 | OPTIONS 描述目標資源的通信選項。 |
8 | TRACE 執行消息迴圈測試以及目標資源的路徑。 |
Request-URI
請求URI是一個統一的資源標識符,用於標識要應用請求的資源。以下是指定URI最常用的表單:
Request-URI = "*" | absoluteURI | abs_path | authority
S.N. | Method and Description |
---|---|
1 | The asterisk * is used when an HTTP request does not apply to a particular resource, but to the server itself, and is only allowed when the method used does not necessarily apply to a resource. For example:
options*http/ |
2 | The absoluteURI is used when an HTTP request is being made to a proxy. The proxy is requested to forward the request or service from a valid cache, and return the response. For example:
HO b b獲取http://www.w3.org/WW/WW/TheProject hthtml TP/1/1/1/1 |
3 | The most common form of Request-URI is that used to identify a resource on an origin server or gateway. For example, a client wishing to retrieve a resource directly from the origin server would create a TCP connection to port 80 of the host "www.w3.org" and send the following lines:
獲取/pub/WWW/TheProject.html HTTP/1.1 主持人:www.w3.org 請注意,絕對路徑不能爲空;如果原始URI中不存在任何路徑,則必須將其指定爲「/」(伺服器根目錄)。 |
Request Header Fields
在學習HTTP頭欄位時,我們將在單獨的一章中研究通用頭和實體頭。現在,讓我們檢查一下請求頭欄位是什麼。
請求頭欄位允許客戶機向伺服器傳遞有關請求和客戶機本身的其他信息。這些欄位用作請求修飾符。下面列出了一些重要的請求頭欄位,可以根據需求使用這些欄位:
接受字符集
接受編碼
接受語言
授權
期待
從
主持人
如果匹配
如果修改自
如果不匹配
中頻範圍
如果未修改自
最大前進速度
代理授權
範圍
工具書類
TE公司
用戶代理
如果要編寫自己的自定義客戶機和Web伺服器,可以引入自定義欄位。
Examples of Request Message
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頁面。連接是一個通用頭,其餘的頭是請求頭。下面的示例演示如何使用請求消息正文將表單數據發送到伺服器:
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伺服器: