Http協議的基本原理(轉載)

來源:互聯網
上載者:User

標籤:

1、Http協議的基本原理:有用戶端向伺服器發送請求,服務端對請求處理,對用戶端進行相應。如所示。

圖1 Http協議原理圖

 

下面給出一個簡單的請求和響應的範例程式碼:

 

用戶端請求:

GET / HTTP/1.1 Host: localhostAccept: text/htmlAccept-Language: en-usAccept-Encoding: gzip,deflateConnection: keep-alive空行(CR+LF) 

 

服務端響應:

HTTP/1.1 200  OK Date: Fri, 13 Jul 2012 02:45:30 GMTServer: ApacheLast-Modified: Fri ,31 Agu 2007 02:02:20 GMTETag: "45bae1-16a-46d776ac"Connection: closeContent-Type: text/htmlContent-Length:362空行(CR+LF)<html>          <head></head><body>....                   --Content  362Bytes....                       </body></html>

 

2、Http請求

a.請求報文格式:

----------------------------------------------------------

請求行             ↔           GET / HTTP/1.1

要求標頭資訊       ↔    Host: localhost

...

...

...

空行(CR+LF)

[請求主體資訊](可以沒有)   

 -----------------------------------------------------------

b.說明:

→請求行:要求方法+請求路徑+Http協議版本

要求方法:GET,POST,HEAD,OPTION,DELETE,PUT等

請求路徑:   /  

Http協議版本:HTTP/0.9     HTTP/1.0     HTTP/1.1

 

→要求標頭資訊

Host:              請求的主機名稱   (localhost)  

                       注意:Host欄位資訊必須被包含在要求標頭資訊中,因為同一個IP地址下可能會有多個虛擬機器主機,

                  需要Host來指定請求的是該IP下的哪一個主機。

Accept:       用戶端可以處理的檔案類型。           (text/html,text/plain,image/jpeg)

Accept-Encoding:  使用者代理程式支援的內容編碼及優先順序順序   (gzip,deflate,compress)

Accept-Charset:    使用者代理程式支援的字元集及優先順序順序       (iso-8859-5)

Referer:            告知伺服器請求的原始資源的URI  (用此欄位可以進行反防盜鏈)

                        例如:Referer:http://www.baidu.com

User-Agent:      傳達建立請求的瀏覽器和使用者代理程式名稱等資訊

 

3、Http響應

a.響應報文格式

-------------------------------------------------

響應行          ↔    HTTP/1.1 200 OK

回應標頭資訊    ↔    Server:Apache

...

...

...

空行(CR+LF)

[響應主體資訊](可以沒有)

--------------------------------------------------

b.說明:

→響應行:Http協議版本+狀態代碼+狀態字

Http協議:HTTP/0.9,HTTP/1.0,HTTP/1.1

狀態代碼:

    狀態代碼                說明

     1XX                  資訊性狀態代碼。接收的請求正在處理

     2XX       成功狀態代碼。請求正常處理完畢

     3XX       重新導向狀態代碼。需要進行附加操作以完成請求

     4XX       用戶端錯誤狀態代碼。伺服器無法處理請求

     5XX       伺服器錯誤狀態代碼。伺服器處理請求出錯

一些重要的狀態代碼:

2XX:200  204  206

200(OK)                  → 用戶端的請求在服務端被正常處理

204(No Content)      → 伺服器接收請求成功處理,但在返迴響應報文中不含實體的主體部分

206(Partial Content) → 用戶端執行了範圍請求,而伺服器成功執行了這部分的GET請求

 

3XX:301  302  303  304  307

301(Moved Permanently) → 永久重新導向。表示請求的資源已被分配了新的URI,以後應使用資源現在所指的URI

302( Found)            → 臨時重新導向。表示請求的資源已被分配了新的URI,希望使用者(本次)能使用新的 URI訪問

303(See Other)               → 表示由於請求對應的資源存在著另一個URI,應使用 GET方法定向擷取請求的資源

304(Not Modified)           → 表示用戶端發送附帶條件的請求時,伺服器端允許請求訪問資源,但未滿足條件的情況。

                   304狀態代碼返回時,不包含任何響應的主體部分

307(Temporary Redirect) → 臨時重新導向。與302有著相同的含義,但是302會將POST變換成GET,而307不會將POST變換成GET

 

4XX:400  401  403  404

400(Bad Request)   → 表示請求的報文中存在語法錯誤

401(Unauthorized)  → 表示發送的請求需要通HTTP認證的認證資訊,若之前已經進行過一次請求,這表示使用者認證失敗

403(Forbidden)       → 表明對請求資源的訪問被伺服器拒絕

404(Not Found)       → 表名在伺服器上無法找到請求的資源

 

5XX:500  503 

500(Internal Server Error)  → 表明伺服器端執行請求時發生了錯誤。也有可能是Web應用存在bug或某些臨時的故障

503(Service Unavailable)    → 表明伺服器暫時處於超負載或進行中停機維護,現在無法執行請求

 

→回應標頭資訊

Age:      告知用戶端源服務端在多久前建立了響應(欄位單位為:秒)

              若建立該響應的伺服器是快取服務器,Age值是指緩衝後的響應再次發起認證到認證完成的時間值。

              代理建立響應時必須加上首部欄位Age

ETag:      告知用戶端響應實體資訊的標記,將資源唯一標識,

               ETag由伺服器分配,沒有統一的演算法規則

Location:將接收方引導至另一個資源所在處

Server:   告知用戶端當前伺服器上安裝的HTTP伺服器應用程式的資訊。不單單會標出伺服器上的軟體應用程式名稱,

               還有可能包括版本號碼和安裝時啟用的可選項

 

 4、實體首部欄位(要求標頭資訊或者回應標頭資訊的欄位)

Content-Encoding:   對實體的主體部分選用的內容編碼方式

Content-Language:告知用戶端主體資訊使用的語言

Content-Length:    說明主體資訊的大小(位元組)

Content-Type:        說明主體資訊的檔案(媒體)類型

Set-Cookie:            服務端向用戶端寫Cookie內容資訊

Cookie:                  用戶端向伺服器發送Cookie內容資訊

 

Http協議的基本原理(轉載)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.