http請求的組成部分

報文流

  一、HTTP 報文是在HTTP 應用程序之間發送的數據塊。這些數據塊以一些文本形式的元信息(meta-information)開頭,這些信息描述了報文的內容及含義,後面跟着可選的數據部分。這些報文在客戶端、服務器和代理之間流動。html

  二、HTTP 使用術語流入(inbound)和流出(outbound)來描述事務處理(transaction)的方向安全

  三、不論是請求報文仍是響應報文,全部報文都會向下遊(downstream)流動服務器

報文組成

HTTP 報文的三個部分cookie

 未命名圖片

 

  • 起始行

報文的第一行就是起始行,在請求報文中用來講明要作些什麼,在響應報文中說明出現了什麼狀況。app

  • 首部字段

起始行後面有零個或多個首部字段。每一個首部字段都包含一個名字和一個值,爲了便於解析,二者之間用冒號(:)來分隔。首部以一個空行結束。添加一個首部字段和添加新行同樣簡單。ide

  • 主體

空行以後就是可選的報文主體了,其中包含了全部類型的數據。請求主體中包括了要發送給Web 服務器的數據;響應主體中裝載了要返回給客戶端的數據。起始行和首部都是文本形式且都是結構化的,而主體則不一樣,主體中能夠包含任意的二進制數據(好比圖片、視頻、音軌、軟件程序)。固然,主體中也能夠包含文本。post

 

MIME 類型是一種文本標記,表示一種主要的對象類型和一個特定的子類型,中間由一條斜槓來分隔。測試

• HTML 格式的文本文檔由 text/html 類型來標記。ui

•普通的 ASCII 文本文檔由 text/plain 類型來標記。編碼

• JPEG 格式的圖片爲 image/jpeg 類型。

• GIF 格式的圖片爲 image/gif 類型。

• Apple 的 QuickTime 電影爲 video/quicktime 類型。

•微軟的 PowerPoint 演示文件爲 application/vnd.ms-powerpoint 類型。

常見的MIME 類型有數百個,實驗性或用途有限的MIME 類型則更多。

 

報文的語法

  • 這是請求報文的格式:

<method> <request-URL> <version>

<headers>

<entity-body>

 

  • 這是響應報文的格式(注意,只有起始行的語法有所不一樣):

<version> <status> <reason-phrase>

<headers>

<entity-body>

 

起始行(start line)

a.請求行

請求報文請求服務器對資源進行一些操做。請求報文的起始行,或稱爲請求行,包含了一個方法和一個請求URL,這個方法描述了服務器應該執行的操做,請求URL描述了要對哪一個資源執行這個方法。請求行中還包含HTTP 的版本,用來告知服務器,客戶端使用的是哪一種HTTP。全部這些字段都由空格符分隔。

例如:POST /infoNewsAction_uploadxheditorfile.action?immediate=1 HTTP/1.1

b.響應行

響應報文承載了狀態信息和操做產生的全部結果數據,將其返回給客戶端。響應報文的起始行,或稱爲響應行,包含了響應報文使用的HTTP 版本、數字狀態碼,以及描述操做狀態的文本形式的緣由短語。 全部這些字段都由空格符進行分隔。

例如:HTTP/1.1 200 OK

首部(header)

1.每一個HTTP 首部都有一種簡單的語法:名字後面跟着冒號(:),而後跟上可選的空格,再跟上字段值,最後是一個CRLF。(或者換行符)

 

常見的首部實例

首部實例

描述

Date:Tue,3Oct 1997 02:16:03 GMT

服務器產生響應的日期

Content-length:15040

實體的主體部分包含了15 040 字節的數據

Content-type:image/gif

實體的主體部分是一個GIF 圖片

Accept: image/gif, image/jpeg, text/html

客戶端能夠接收GIF 圖片和JPEG 圖片以及HTML

 

2. 首部延續行

將長的首部行分爲多行能夠提升可讀性,多出來的每行前面至少要有一個空格或製表符(tab)。

 

HTTP/1.0 200 OK

Content-Type: image/gif

Content-Length: 8572

Server: Test Server

Version 1.0

 

 

• 通用首部

這些是客戶端和服務器均可以使用的通用首部。能夠在客戶端、服務器和其餘應

用程序之間提供一些很是有用的通用功能。好比,Date 首部就是一個通用首部,

每一端均可以用它來講明構建報文的時間和日期:

Date: Tue, 3 Oct 1974 02:16:00 GMT

• 請求首部

從名字中就能夠看出,請求首部是請求報文特有的。它們爲服務器提供了一些額

外信息,好比客戶端但願接收什麼類型的數據。例如,下面的Accept 首部就用

來告知服務器客戶端會接受與其請求相符的任意媒體類型:

Accept: */*

 

Accept首部

首  部

描  述

Accept

 告訴服務器可以發送哪些媒體類型

Accept-Charset

 告訴服務器可以發送哪些字符集

Accept-Encoding

告訴服務器可以發送哪些編碼方式

Accept-Language

告訴服務器可以發送哪些語言

TE11

告訴服務器可使用哪些擴展傳輸編碼

 

安全請求首部

首  部

描  述

Authorization

包含了客戶端提供給服務器,以便對其自身進行認證的數據

Cookie

客戶端用它向服務器傳送一個令牌——它並非真正的安全首部,但確實隱含了安全功能14

Cookie2

用來講明請求端支持的cookie 版本,參見11.6.7 節

 

• 響應首部

響應報文有本身的首部集,以便爲客戶端提供信息(好比,客戶端在與哪一種類型

的服務器進行交互)。例如,下列Server 首部就用來告知客戶端它在與一個版

本1.0 的Tiki-Hut 服務器進行交互:

Server: Tiki-Hut/1.0

• 實體首部

實體首部指的是用於應對實體主體部分的首部。好比,能夠用實體首部來講明實

體主體部分的數據類型。例如,能夠經過下列Content-Type 首部告知應用程

序,數據是以iso-latin-1 字符集表示的HTML 文檔:

Content-Type: text/html; charset=iso-latin-1

• 內容首部

首  部

描  述

Content-Encoding

 對主體執行的任意編碼方式

Content-Length

主體的長度或尺寸

Content-Type

 這個主體的對象類型

• 擴展首部

擴展首部是非標準的首部,由應用程序開發者建立,但還未添加到已批准的

HTTP 規範中去。即便不知道這些擴展首部的含義,HTTP 程序也要接受它們並

對其進行轉發。

 

方法

常見的http方法

 

最經常使用的方法是HEAD GET POST。

1.GET

一般用於請求服務器發送某個資源。

 

2.HEAD 

HEAD 方法與GET 方法的行爲很相似,但服務器在響應中只返回首部。不會返回實體的主體部分。這就容許客戶端在未獲取實際資源的狀況下,對資源的首部進行檢查。

使用HEAD,能夠:在不獲取資源的狀況下

  • 瞭解資源的狀況(好比,判斷其類型);
  • 經過查看響應中的狀態碼,看看某個對象是否存在;
  • 經過查看首部,測試資源是否被修改了。

 

3.post
一般用於向服務器提交數據。表單提交經常用到post。

 

狀態碼

100~199——信息性狀態碼

200~299——成功狀態碼

300~399——重定向狀態碼     <p65>

400~499——客戶端錯誤狀態碼

500~599——服務器錯誤狀態碼

相關文章
相關標籤/搜索