天天看點

HTTP協定HTTP請求方法HTTP狀态碼HTTP content-type

HTTP是一個基于TCP/IP通信協定來傳遞資料(HTML 檔案, 圖檔檔案, 查詢結果等)。

HTTP 工作原理

HTTP協定工作于用戶端-服務端架構上。浏覽器作為HTTP用戶端通過URL向HTTP服務端即WEB伺服器發送所有請求。

Web伺服器有:Apache伺服器,IIS伺服器(Internet Information Services)等。

Web伺服器根據接收到的請求後,向用戶端發送響應資訊。

HTTP預設端口号為80,但是你也可以改為8080或者其他端口。

HTTP三點注意事項:

  • HTTP是無連接配接:無連接配接的含義是限制每次連接配接隻處理一個請求。伺服器處理完客戶的請求,并收到客戶的應答後,即斷開連接配接。采用這種方式可以節省傳輸時間。
  • HTTP是媒體獨立的:這意味着,隻要用戶端和伺服器知道如何處理的資料内容,任何類型的資料都可以通過HTTP發送。用戶端以及伺服器指定使用适合的MIME-type内容類型。
  • HTTP是無狀态:HTTP協定是無狀态協定。無狀态是指協定對于事務處理沒有記憶能力。缺少狀态意味着如果後續處理需要前面的資訊,則它必須重傳,這樣可能導緻每次連接配接傳送的資料量增大。另一方面,在伺服器不需要先前資訊時它的應答就較快。

以下圖表展示了HTTP協定通信流程:

HTTP協定HTTP請求方法HTTP狀态碼HTTP content-type

用戶端請求消息

用戶端發送一個HTTP請求到伺服器的請求消息包括以下格式:請求行(request line)、請求頭部(header)、空行和請求資料四個部分組成,下圖給出了請求封包的一般格式。

HTTP協定HTTP請求方法HTTP狀态碼HTTP content-type

伺服器響應消息

HTTP響應也由四個部分組成,分别是:狀态行、消息報頭、空行和響應正文。

HTTP協定HTTP請求方法HTTP狀态碼HTTP content-type

HTTP請求方法

根據HTTP标準,HTTP請求可以使用多種請求方法。

HTTP1.0定義了三種請求方法: GET, POST 和 HEAD方法。

HTTP1.1新增了五種請求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。

序号 方法 描述
1 GET 請求指定的頁面資訊,并傳回實體主體。
2 HEAD 類似于get請求,隻不過傳回的響應中沒有具體的内容,用于擷取報頭
3 POST 向指定資源送出資料進行處理請求(例如送出表單或者上傳檔案)。資料被包含在請求體中。POST請求可能會導緻新的資源的建立和/或已有資源的修改。

在本章節中我們将具體來介紹HTTP響應頭資訊。

應答頭 說明
Allow 伺服器支援哪些請求方法(如GET、POST等)。
Content-Encoding 文檔的編碼(Encode)方法。隻有在解碼之後才可以得到Content-Type頭指定的内容類型。利用gzip壓縮文檔能夠顯著地減少HTML文檔的下載下傳時間。Java的GZIPOutputStream可以很友善地進行gzip壓縮,但隻有Unix上的Netscape和Windows上的IE 4、IE 5才支援它。是以,Servlet應該通過檢視Accept-Encoding頭(即request.getHeader("Accept-Encoding"))檢查浏覽器是否支援gzip,為支援gzip的浏覽器傳回經gzip壓縮的HTML頁面,為其他浏覽器傳回普通頁面。
Content-Length 表示内容長度。隻有當浏覽器使用持久HTTP連接配接時才需要這個資料。如果你想要利用持久連接配接的優勢,可以把輸出文檔寫入 ByteArrayOutputStream,完成後檢視其大小,然後把該值放入Content-Length頭,最後通過byteArrayStream.writeTo(response.getOutputStream()發送内容。
Content-Type 表示後面的文檔屬于什麼MIME類型。Servlet預設為text/plain,但通常需要顯式地指定為text/html。由于經常要設定Content-Type,是以HttpServletResponse提供了一個專用的方法setContentType。
Date 目前的GMT時間。你可以用setDateHeader來設定這個頭以避免轉換時間格式的麻煩。
Expires 應該在什麼時候認為文檔已經過期,進而不再緩存它?

HTTP狀态碼

當浏覽者通路一個網頁時,浏覽者的浏覽器會向網頁所在伺服器送出請求。當浏覽器接收并顯示網頁前,此網頁所在的伺服器會傳回一個包含HTTP狀态碼的資訊頭(server header)用以響應浏覽器的請求。

HTTP狀态碼的英文為HTTP Status Code。

下面是常見的HTTP狀态碼:

  • 200 - 請求成功
  • 301 - 資源(網頁等)被永久轉移到其它URL
  • 404 - 請求的資源(網頁等)不存在
  • 500 - 内部伺服器錯誤

HTTP狀态碼分類

HTTP狀态碼由三個十進制數字組成,第一個十進制數字定義了狀态碼的類型,後兩個數字沒有分類的作用。HTTP狀态碼共分為5種類型:

HTTP狀态碼分類

分類 分類描述
1** 資訊,伺服器收到請求,需要請求者繼續執行操作
2** 成功,操作被成功接收并處理
3** 重定向,需要進一步的操作以完成請求
4** 用戶端錯誤,請求包含文法錯誤或無法完成請求
5** 伺服器錯誤,伺服器在處理請求的過程中發生了錯誤

HTTP content-type

Content-Type,内容類型,一般是指網頁中存在的Content-Type,用于定義網絡檔案的類型和網頁的編碼,決定浏覽器将以什麼形式、什麼編碼讀取這個檔案,這就是經常看到一些Asp網頁點選的結果卻是下載下傳到的一個檔案或一張圖檔的原因

.jpe image/jpeg .jpe application/x-jpe
.jpeg image/jpeg .jpg image/jpeg

繼續閱讀