《Java Web程序設(shè)計(jì)任務(wù)教程》HTTP協(xié)議 課件_第1頁
《Java Web程序設(shè)計(jì)任務(wù)教程》HTTP協(xié)議 課件_第2頁
《Java Web程序設(shè)計(jì)任務(wù)教程》HTTP協(xié)議 課件_第3頁
《Java Web程序設(shè)計(jì)任務(wù)教程》HTTP協(xié)議 課件_第4頁
《Java Web程序設(shè)計(jì)任務(wù)教程》HTTP協(xié)議 課件_第5頁
已閱讀5頁,還剩53頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第3章HTTP協(xié)議《Java

Web程序設(shè)計(jì)任務(wù)教程(第2版)》學(xué)習(xí)目標(biāo)/Target

了解HTTP消息以及HTTP1.0和HTTP1.1的區(qū)別熟悉HTTP請求行和常用請求頭字段的含義

熟悉HTTP響應(yīng)狀態(tài)行和常用響應(yīng)消息頭字段的含義章節(jié)概述/

Summary

如同兩個(gè)國家元首的會晤過程需要遵守一定的外交禮節(jié)一樣,在瀏覽器與服務(wù)器的交互過程中,也要遵循一定的規(guī)則,這個(gè)規(guī)則就是HTTP。HTTP專門用于定義瀏覽器與服務(wù)器之間交換數(shù)據(jù)的過程以及數(shù)據(jù)本身的格式。對于從事Web開發(fā)的人員來說,只有深入理解HTTP,才能更好地開發(fā)、維護(hù)、管理Web應(yīng)用。本章將圍繞HTTP展開詳細(xì)講解。目錄/Contents010203HTTP概述HTTP請求消息HTTP響應(yīng)消息HTTP概述3.13.1HTTP概述-HTTP的概念先定一個(gè)小目標(biāo)!

先定一個(gè)小目標(biāo)!了解HTTP的概念3.1HTTP概述HTTP是HyperTextTransferProtocol的縮寫,即超文本傳輸協(xié)議。它是一種請求/響應(yīng)式的協(xié)議,客戶端在與服務(wù)器建立連接后,就可以向服務(wù)器發(fā)送請求,這種請求被稱作HTTP請求,服務(wù)器接收到請求后會做出響應(yīng),稱為HTTP響應(yīng)。HTTP的概念3.1HTTP概述(1)HTTP協(xié)議支持客戶端(瀏覽器就是一種Web客戶端)/服務(wù)器模式。(2)簡單快速,客戶端向服務(wù)器請求服務(wù)時(shí),只需傳送請求方式和路徑。常用的請求方式有GET、POST等,不同的請求方式規(guī)定的客戶端與服務(wù)器聯(lián)系的類型也不同。HTTP比較簡單,使得HTTP服務(wù)器的程序規(guī)模小,因而通信速度很快。(3)靈活,HTTP允許傳輸任意類型的數(shù)據(jù),正在傳輸?shù)臄?shù)據(jù)類型由Content-Type加以標(biāo)記。(4)無狀態(tài),HTTP是無狀態(tài)協(xié)議。無狀態(tài)是指協(xié)議對于事務(wù)處理沒有記憶能力,如果后續(xù)處理需要前面的信息,則必須重新傳輸,這樣可能導(dǎo)致每次連接傳送的數(shù)據(jù)量增大。HTTP協(xié)議的特點(diǎn)3.1HTTP概述-HTTP1.0和HTTP1.1先定一個(gè)小目標(biāo)!

先定一個(gè)小目標(biāo)!了解HTTP1.0和HTTP1.1的特點(diǎn)及區(qū)別3.1HTTP概述HTTP自誕生以來,先后經(jīng)歷了很多版本,其中,最早的版本是HTTP0.9,它于1990年被發(fā)行。后來,為了進(jìn)一步完善HTTP,在1996年發(fā)行了HTTP1.0版本,在1997年發(fā)行了HTTP1.1版本。由于HTTP0.9版本已經(jīng)過時(shí),這里不作過多講解。HTTP的發(fā)展3.1HTTP概述基于HTTP1.0協(xié)議的客戶端與服務(wù)器在交互過程中需要經(jīng)過建立連接、發(fā)送請求信息、回送響應(yīng)信息、關(guān)閉連接4個(gè)步驟。HTTP

1.0的介紹3.1HTTP概述客戶端與服務(wù)器建立連接后,每次只能處理一個(gè)HTTP請求。對于內(nèi)容豐富的網(wǎng)頁來說,這樣的通信方式明顯有缺陷。例如,基于HTTP1.0協(xié)議的HTML代碼片段,具體如下:HTTP

1.0的缺點(diǎn)<html> <body>

<imgsrc="/image01.jpg"> <imgsrc="/image02.jpg"> <imgsrc="/image03.jpg"> </body> </html>當(dāng)客戶端訪問這些圖片時(shí),需要發(fā)送三次請求,并且每次請求都需要與服務(wù)器重新建立連接。如此一來,必然導(dǎo)致客戶端與服務(wù)器交互耗時(shí),影響網(wǎng)頁的訪問速度。3.1HTTP概述為了克服上述HTTP1.0客戶端與服務(wù)器交互耗時(shí)的缺陷,HTTP1.1版本應(yīng)運(yùn)而生,它支持持久連接,也就是說在一個(gè)TCP連接上可以傳送多個(gè)HTTP請求和響應(yīng),從而減少了建立和關(guān)閉連接的消耗和延時(shí)。HTTP

1.1的介紹3.1HTTP概述當(dāng)客戶端與服務(wù)器建立連接后,客戶端可以向服務(wù)器發(fā)送多個(gè)請求,并且在發(fā)送下個(gè)請求時(shí),無需等待上次請求的返回結(jié)果,服務(wù)器會按照客戶端發(fā)送的請求先后順序依次返回響應(yīng)結(jié)果,以保證客戶端能夠區(qū)分出每次請求的響應(yīng)內(nèi)容。HTTP1.1不僅繼承了HTTP1.0的優(yōu)點(diǎn),而且有效解決了HTTP1.0的性能問題,顯著地減少了瀏覽器與服務(wù)器交互所需要的時(shí)間。HTTP

1.1的介紹3.1HTTP概述-HTTP消息先定一個(gè)小目標(biāo)!

先定一個(gè)小目標(biāo)!熟悉HTTP消息的組成3.1HTTP概述當(dāng)用戶在瀏覽器中訪問某個(gè)URL地址、單擊網(wǎng)頁的某個(gè)超鏈接或者提交網(wǎng)頁上的form表單時(shí),瀏覽器都會向服務(wù)器發(fā)送請求數(shù)據(jù),即HTTP請求消息。服務(wù)器接收到請求數(shù)據(jù)后,會將處理后的數(shù)據(jù)發(fā)送給客戶端,即HTTP響應(yīng)消息。HTTP請求消息和HTTP響應(yīng)消息統(tǒng)稱為HTTP消息。HTTP消息3.1HTTP概述STEP01要想觀察請求方式、HTTP協(xié)議版本號、請求頭和響應(yīng)頭等信息,需要借助瀏覽器的網(wǎng)絡(luò)查看工具。這里使用版本為79.0beta的Firefox瀏覽器。單擊Firefox瀏覽器右上角的“菜單”按鈕,會彈出菜單欄。3.1HTTP概述STEP02在Firefox瀏覽器的菜單欄中選擇【W(wǎng)ebDeveloper】→【Network】,可以查看瀏覽器和服務(wù)器通信的HTTP消息。3.1HTTP概述利用Firefox瀏覽器查看HTTP消息的步驟在瀏覽器的地址欄中輸入訪問百度首頁,在【Network】的請求信息欄中可以看到請求的URL地址。步驟1步驟2步驟33.1HTTP概述利用Firefox瀏覽器查看HTTP消息的步驟單擊其中任一條請求信息,展開默認(rèn)頭信息選項(xiàng)卡,我們可以看到格式化后的響應(yīng)頭信息和請求頭信息。單擊請求頭信息一欄左邊的“原始頭信息”,可以看到原始的請求頭信息,具體內(nèi)容如下所示:GET/HTTP/1.1Host:User-Agent:Mozilla/5.0(WindowsNT10.0;Win64;x64;rv:79.0)Gecko/20100101Firefox/79.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language:en-US,en;q=0.5Accept-Encoding:gzip,deflate,brConnection:keep-alive步驟2步驟1步驟3請求行請求頭3.1HTTP概述利用Firefox瀏覽器查看HTTP消息的步驟單擊響應(yīng)頭信息一欄左邊的“原始頭信息”,可以看到原始的響應(yīng)頭信息,如下所示:GET/HTTP/1.1Date:Mon,06Jul202006:48:44GMTContent-Type:text/html;charset=utf-8Transfer-Encoding:chunkedConnection:Keep-AliveVary:Accept-EncodingExpires:Mon,06Jul202006:47:47GMTCache-Control:privateServer:BWS/1.0步驟1步驟3步驟2響應(yīng)狀態(tài)行響應(yīng)消息頭HTTP請求消息3.23.2.1HTTP請求行先定一個(gè)小目標(biāo)!

先定一個(gè)小目標(biāo)!熟悉HTTP的請求行3.2.1HTTP請求行HTTP請求行位于請求消息的第1行,它包括三個(gè)部分,分別是請求方式、資源路徑以及所使用的HTTP版本,具體示例如下:HTTP請求行GET/index.htmlHTTP/1.1GET是請求方式,index.html是請求資源路徑,HTTP/1.1是通信使用的協(xié)議版本。需要注意的是,請求行中的每個(gè)部分需要用空格分隔,最后要以回車換行結(jié)束。3.2.1HTTP請求行HTTP請求方式請求方式含義GET請求獲取請求行的URI所標(biāo)識的資源POST向指定資源提交數(shù)據(jù),請求服務(wù)器進(jìn)行處理(如提交表單或者上傳文件)HEAD請求獲取由URI所標(biāo)識資源的響應(yīng)消息頭PUT將網(wǎng)頁放置到指定URL位置(上傳/移動)DELETE請求服務(wù)器刪除URI所標(biāo)識的資源TRACE請求服務(wù)器回送收到的請求信息,主要用于測試或診斷CONNECT保留將來使用OPTIONS請求查詢服務(wù)器的性能,或者查詢與資源相關(guān)的選項(xiàng)和需求3.2.1HTTP請求行HTTP請求方式-GET方法當(dāng)用戶在瀏覽器地址欄中直接輸入某個(gè)URL地址或者單擊網(wǎng)頁上的一個(gè)超鏈接時(shí),瀏覽器將使用GET方式發(fā)送請求。如果將網(wǎng)頁上的form表單的method屬性設(shè)置為“GET”或者不設(shè)置method屬性(默認(rèn)值是GET),當(dāng)用戶提交表單時(shí),瀏覽器也將使用GET方式發(fā)送請求。如果瀏覽器請求的URL中有參數(shù)部分,在瀏覽器生成的請求消息中,參數(shù)部分將附加在請求行中的資源路徑后面。先來看一個(gè)URL地址,具體如下:/javaForum?name=lee&psd=hnxy“?”后面的內(nèi)容為參數(shù)信息。參數(shù)是由參數(shù)名和參數(shù)值組成的,并且中間使用等號(=)進(jìn)行連接。如果URL地址中有多個(gè)參數(shù),參數(shù)之間用“&”分隔。3.2.1HTTP請求行HTTP請求方式-GET方法當(dāng)瀏覽器向服務(wù)器發(fā)送請求消息時(shí),參數(shù)部分會附加在要訪問的URI資源后面,具體如下所示:GET/javaForum?name=lee&psd=hnxyHTTP/1.1需要注意的是,使用GET方式傳送的數(shù)據(jù)量有限,最多不能超過2KB。3.2.1HTTP請求行HTTP請求方式-POST方法如果網(wǎng)頁上form表單的method屬性設(shè)置為“POST”,當(dāng)用戶提交表單時(shí),瀏覽器將使用POST方式提交表單內(nèi)容,并把form表單的元素及數(shù)據(jù)作為HTTP消息的實(shí)體內(nèi)容發(fā)送給服務(wù)器,而不是作為URL地址的參數(shù)傳遞。另外,在使用POST方式向服務(wù)器傳遞數(shù)據(jù)時(shí),Content-Type消息頭會自動設(shè)置為“application/x-www-form-urlencoded”,Content-Length消息頭會自動設(shè)置為實(shí)體內(nèi)容的長度,具體示例如下:POST/javaForumHTTP/1.1Host:Content-Type:application/x-www-form-urlencodedContent-Length:17name=lee&psd=hnxy3.2.1HTTP請求行HTTP請求方式-POST方法在實(shí)際開發(fā)中,通常都會使用POST方式發(fā)送請求,原因主要有以下兩個(gè):(1)POST傳輸數(shù)據(jù)大小無限制由于GET請求方式是通過請求參數(shù)傳遞數(shù)據(jù)的,因此最多可傳遞2KB的數(shù)據(jù)。而POST請求方式是通過實(shí)體內(nèi)容傳遞數(shù)據(jù)的,因此可以傳遞數(shù)據(jù)的大小沒有限制。(2)POST比GET請求方式更安全由于GET請求方式的參數(shù)信息都會在URL地址欄明文顯示,而POST請求方式傳遞的參數(shù)隱藏在實(shí)體內(nèi)容中,用戶是看不到的,因此POST比GET請求方式更安全。3.2.2HTTP請求頭先定一個(gè)小目標(biāo)!

先定一個(gè)小目標(biāo)!熟悉HTTP的請求頭3.2.2HTTP請求頭在HTTP請求消息中,請求行之后便是若干請求頭。請求頭主要用于向服務(wù)器傳遞附加消息,例如,客戶端可以接收的數(shù)據(jù)類型、壓縮方法、語言以及發(fā)送請求的超鏈接所屬頁面的URL地址等信息,具體示例如下所示:Host:localhost:8080Accept:image/gif,image/x-xbitmap,*Referer:http://localhost:8080/itcast/Accept-Language:zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3Accept-Encoding:gzip,deflateContent-Type:application/x-www-form-urlencodedUser-Agent:Mozilla/4.0(compatible;MSIE7.0;WindowsNT10.0;GTB6.5;CIBA)Connection:Keep-AliveCache-Control:no-cacheHTTP請求頭3.2.2HTTP請求頭請求頭中可以看出,每個(gè)請求頭都是由頭字段名稱和值構(gòu)成,頭字段名稱和值之間用冒號(:)和空格分隔,每個(gè)請求頭之后使用一個(gè)回車換行符標(biāo)志結(jié)束。需要注意的是,頭字段名稱不區(qū)分大小寫,但習(xí)慣上將單詞的第一個(gè)字母大寫。HTTP請求頭3.2.2HTTP請求頭HTTP請求頭的字段頭字段說明AcceptAccept頭字段用于指出客戶端程序(通常是瀏覽器)能夠處理的MIME(MultipurposeInternetMailExtension)類型Accept-CharsetAccept-Charset頭字段用于告知服務(wù)器客戶端所使用的字符集Accept-EncodingAccept-Encoding頭字段用于指定客戶端能夠進(jìn)行解碼的數(shù)據(jù)編碼方式,這里的編碼方式通常指的是某種壓縮方式Accept-LanguageAccept-Language頭字段用于指定客戶端期望服務(wù)器返回哪個(gè)國家語言的文檔Authorization當(dāng)客戶端訪問受口令保護(hù)的網(wǎng)頁時(shí),Web服務(wù)器會發(fā)送401響應(yīng)狀態(tài)碼和WWW-Authenticate響應(yīng)頭,要求客戶端使用Authorization請求頭來應(yīng)答Proxy-AuthorizationProxy-Authorization頭字段的作用與用法與Authorization頭字段基本相同,只不過Proxy-Authorization請求頭是服務(wù)器向代理服務(wù)器發(fā)送的驗(yàn)證信息HostHost頭字段用于指定資源所在的主機(jī)名和端口號If-Match當(dāng)客戶機(jī)再次向服務(wù)器請求這個(gè)網(wǎng)頁文件時(shí),可以使用If-Match頭字段附帶以前緩存的實(shí)體標(biāo)簽內(nèi)容,這個(gè)請求被視為一個(gè)條件請求3.2.2HTTP請求頭HTTP請求頭的字段頭字段說明If-Modified-SinceIf-Modified-Since請求頭的作用和If-Mach類似,只不過它的值為GMT格式的時(shí)間Range用于指定服務(wù)器只需返回文檔中的部分內(nèi)容及內(nèi)容范圍,這對較大文檔的斷點(diǎn)續(xù)傳非常有用If-RangeIf-Range頭字段只能伴隨著Range頭字段一起使用,其值可以是實(shí)體標(biāo)簽或GMT格式的時(shí)間Max-Forward指定當(dāng)前請求可以途經(jīng)的代理服務(wù)器數(shù)量,每經(jīng)過一個(gè)代理服務(wù)器,此數(shù)值就減1RefererReferer頭字段非常有用,常被網(wǎng)站管理人員用來追蹤網(wǎng)站的訪問者是如何導(dǎo)航進(jìn)入網(wǎng)站的。同時(shí)Referer頭字段還可以用于網(wǎng)站的防盜鏈User-AgentUser-Agent中文名為用戶代理,簡稱UA,它用于指定瀏覽器或者其他客戶端程序使用的操作系統(tǒng)及版本、瀏覽器及版本、瀏覽器渲染引擎、瀏覽器語言等,以便服務(wù)器針對不同類型的瀏覽器而返回不同的內(nèi)容3.2.2HTTP請求頭HTTP請求頭的字段—AcceptAccept頭字段用于指出客戶端程序(通常是瀏覽器)能夠處理的MIME(MultipurposeInternetMailExtensions,多用途互聯(lián)網(wǎng)郵件擴(kuò)展)類型。例如,如果瀏覽器和服務(wù)器同時(shí)支持png類型的圖片,則瀏覽器可以發(fā)送包含image/png的Accept頭字段,服務(wù)器檢查到Accept頭中包含image/png這種MIME類型,可能在網(wǎng)頁中的img元素中使用png類型的文件。MIME類型有很多種,例如,下面的這些MIME類型都可以作為Accept頭字段的值。Accept:text/html,表明客戶端希望接受HTML文本。Accept:image/gif,表明客戶端希望接受GIF圖像格式的資源。Accept:image/*,表明客戶端可以接受所有image格式的子類型。Accept:*/*,表明客戶端可以接受所有格式的內(nèi)容。3.2.2HTTP請求頭HTTP請求頭的字段—Accept-EncodingAccept-Encoding頭字段用于指定客戶端能夠進(jìn)行解碼的數(shù)據(jù)編碼方式,這里的編碼方式通常指的是某種壓縮方式。在Accept-Encoding頭字段中,可以指定多個(gè)數(shù)據(jù)編碼方式,它們之間以逗號分隔,具體示例如下:Accept-Encoding:gzip,compressgzip和compress這兩種格式是最常見的數(shù)據(jù)編碼方式。在傳輸較大的實(shí)體內(nèi)容之前,對其進(jìn)行壓縮編碼,可以節(jié)省網(wǎng)絡(luò)帶寬和傳輸時(shí)間。服務(wù)器接收到這個(gè)請求頭后,使用其中指定的一種格式對原始文檔內(nèi)容進(jìn)行壓縮編碼,然后再將其作為響應(yīng)消息的實(shí)體內(nèi)容發(fā)送給客戶端,并且在Content-Encoding響應(yīng)頭中指出實(shí)體內(nèi)容所使用的壓縮編碼格式。瀏覽器在接收到這樣的實(shí)體內(nèi)容之后,需要對其進(jìn)行反向解壓縮。3.2.2HTTP請求頭HTTP請求頭的字段—HostHost頭字段用于指定資源所在的主機(jī)名和端口號,格式與資源完整URL中的主機(jī)名和端口號部分相同,具體示例如下所示Host::80由于瀏覽器連接服務(wù)器時(shí)默認(rèn)使用的端口號為80,所以“”后面的端口號信息“:80”可以省略。需要注意的是,在HTTP1.1中,瀏覽器和其他客戶端發(fā)送的每個(gè)請求消息中必須包含Host請求頭字段,以便Web服務(wù)器能夠根據(jù)Host頭字段中的主機(jī)名區(qū)分客戶端所要訪問的虛擬Web站點(diǎn)。當(dāng)瀏覽器訪問Web站點(diǎn)時(shí),會根據(jù)地址欄中的URL地址自動生成相應(yīng)的Host請求頭。3.2.2HTTP請求頭If-Modified-Since請求頭的作用和If-Mach類似,只不過它的值為GMT格式的時(shí)間。If-Modified-Since請求頭被視作一個(gè)請求條件,只有服務(wù)器中文檔的修改時(shí)間比If-Modified-Since請求頭指定的時(shí)間新,服務(wù)器才會返回文檔內(nèi)容。否則,服務(wù)器將返回一個(gè)304(NotModified)狀態(tài)碼來表示瀏覽器緩存的文檔是最新的,而不向?yàn)g覽器返回文檔內(nèi)容,這時(shí),瀏覽器仍然使用以前緩存的文檔。通過這種方式,可以在一定程度上減少瀏覽器與服務(wù)器之間的通信數(shù)據(jù)量,從而提高了通信效率。HTTP請求頭-If-Modified-Since3.2.2HTTP請求頭HTTP請求頭—Referer瀏覽器向服務(wù)器發(fā)出的請求,可能是直接在瀏覽器中輸入U(xiǎn)RL地址而發(fā)出的,也可能是單擊一個(gè)網(wǎng)頁上的超鏈接而發(fā)出的。對于第一種直接在瀏覽器地址欄中輸入U(xiǎn)RL地址的情況,瀏覽器不會發(fā)送Referer請求頭。而對于第二種情況,例如在一個(gè)頁面中包含一個(gè)指向遠(yuǎn)程服務(wù)器的超鏈接,當(dāng)單擊這個(gè)超鏈接向服務(wù)器發(fā)送GET請求時(shí),瀏覽器會在發(fā)送的請求消息中包含Referer頭字段,如下所示:Host::80Referer頭字段非常有用,常被網(wǎng)站管理人員用來追蹤網(wǎng)站的訪問者是如何導(dǎo)航進(jìn)入網(wǎng)站的。同時(shí)Referer頭字段還可以用于網(wǎng)站的防盜鏈。3.2.2HTTP請求頭什么是盜鏈?假設(shè)一個(gè)網(wǎng)站的首頁中想顯示一些圖片信息,而在該網(wǎng)站的服務(wù)器中并沒有這些圖片資源,它通過在Html文件中使用<img>標(biāo)簽鏈接到其他網(wǎng)站的圖片資源,將其展示給瀏覽者,這就是盜鏈。盜鏈的網(wǎng)站提高了自己網(wǎng)站的訪問量,卻加重了被鏈接網(wǎng)站服務(wù)器的負(fù)擔(dān),損害了其合法利益。所以,一個(gè)網(wǎng)站為了保護(hù)自己的資源,可以通過Referer頭檢測出從哪里鏈接到當(dāng)前的網(wǎng)頁或資源,一旦檢測到不是通過本站的鏈接進(jìn)行的訪問,可以阻止訪問或者跳轉(zhuǎn)到指定的頁面。3.2.2HTTP請求頭HTTP請求頭—User-AgentUser-Agent中文名為用戶代理,簡稱

UA,它用于指定瀏覽器或者其他客戶端程序使用的操作系統(tǒng)及版本、瀏覽器及版本、瀏覽器渲染引擎、瀏覽器語言等,以便服務(wù)器針對不同類型的瀏覽器而返回不同的內(nèi)容。IE瀏覽器生成的User-Agent請求信息示例如下:User-Agent:Mozilla/4.0(compatible;MSIE11.0;WindowsNT10.0;Trident/4.0)在上面的請求頭中,User-Agent頭字段首先列出了Mozilla版本,然后列出了瀏覽器的版本(MSIE11.0表示MicrosoftIE11.0)、操作系統(tǒng)的版本(WindowsNT10.0表示W(wǎng)indows10)以及瀏覽器的引擎名稱(Trident/4.0)。HTTP響應(yīng)消息3.33.3.1HTTP響應(yīng)狀態(tài)行先定一個(gè)小目標(biāo)!

先定一個(gè)小目標(biāo)!熟悉HTTP響應(yīng)狀態(tài)行的3個(gè)部分3.3.1HTTP響應(yīng)狀態(tài)行HTTP響應(yīng)狀態(tài)行位于響應(yīng)消息的第一行,它包括3個(gè)部分,分別是HTTP版本、一個(gè)表示成功或錯(cuò)誤的整數(shù)代碼(狀態(tài)碼)和對狀態(tài)碼進(jìn)行描述的文本信息。HTTP響應(yīng)狀態(tài)行具體示例如下:HTTP/1.1200OKHTTP響應(yīng)狀態(tài)行HTTP/1.1是通信使用的協(xié)議版本,200是狀態(tài)碼,OK是狀態(tài)描述,說明客戶端請求成功。需要注意的是,請求行中的每個(gè)部分需要用空格分隔,最后要以回車換行結(jié)束。3.3.1HTTP響應(yīng)狀態(tài)行狀態(tài)代碼由3位數(shù)字組成,表示請求是否被理解或被滿足。HTTP響應(yīng)狀態(tài)碼的第一個(gè)數(shù)字定義了響應(yīng)的類別,后面兩位沒有具體的分類。第一個(gè)數(shù)字有5種可能的取值。HTTP的狀態(tài)碼3.3.1HTTP響應(yīng)狀態(tài)行HTTP的狀態(tài)碼1XX2XX表示請求已接收,需要繼續(xù)處理。表示請求已成功被服務(wù)器接收、理解并接受。為完成請求,客戶端需進(jìn)一步細(xì)化請求??蛻舳说恼埱笥绣e(cuò)誤。服務(wù)器出現(xiàn)錯(cuò)誤。3XX4XX5XX3.3.1HTTP響應(yīng)狀態(tài)行Web開發(fā)中的常見狀態(tài)碼狀態(tài)碼說明200表示服務(wù)器成功處理了客戶端的請求??蛻舳说恼埱蟪晒?,響應(yīng)消息返回正常的請求結(jié)果302表示請求的資源臨時(shí)從不同的URI響應(yīng)請求,但請求者應(yīng)繼續(xù)使用原有位置來進(jìn)行以后的請求。例如,在請求重定向中,臨時(shí)URI應(yīng)該是響應(yīng)的Location頭字段所指向的資源304如果客戶端有緩存的文檔,它會在發(fā)送的請求消息中附加一個(gè)If-Modified-Since請求頭,表示只有請求的文檔在If-Modified-Since指定的時(shí)間之后發(fā)生過更改,服務(wù)器才需要返回新文檔。狀態(tài)碼304表示客戶端緩存的版本是最新的,客戶端應(yīng)該繼續(xù)使用它。否則,服務(wù)器將使用狀態(tài)碼200返回所請求的文檔404表示服務(wù)器找不到請求的資源。例如,訪問服務(wù)器不存在的網(wǎng)頁經(jīng)常返回此狀態(tài)碼500表示服務(wù)器發(fā)生錯(cuò)誤,無法處理客戶端的請求。大部分情況下,是服務(wù)器的CGI、ASP、JSP等程序發(fā)生了錯(cuò)誤,一般服務(wù)器會在相應(yīng)消息中提供具體的錯(cuò)誤信息3.3.2HTTP響應(yīng)頭先定一個(gè)小目標(biāo)!

先定一個(gè)小目標(biāo)!熟悉HTTP響應(yīng)頭3.3.2HTTP響應(yīng)頭在HTTP響應(yīng)消息中,第一行為響應(yīng)狀態(tài)行,緊接著是若干響應(yīng)頭,服務(wù)器通過響應(yīng)頭向客戶端傳遞附加信息,包括服務(wù)程序名、被請求資源需要的認(rèn)證方式、客戶端請求資源的最后修改時(shí)間、重定向地址等信息。HTTP響應(yīng)頭的具體示例如下所示:Server:Apache-Coyote/1.1Content-Encoding:gzipContent-Length:80Content-Language:zh-cn Content-Type:text/html;charset=GB2312Last-Modified:Mon,06Jul202007:47:47GMTExpires:-1 Cache-Control:no-cachePragma:no-cacheHTTP響應(yīng)頭3.3.2HTTP響應(yīng)頭HTTP響應(yīng)頭字段頭字段說明Accept-Range用于說明服務(wù)器是否接收客戶端使用Range請求頭字段請求資源Age用于指出當(dāng)前網(wǎng)頁文檔可以在客戶端或代理服務(wù)器中緩存的有效時(shí)間,設(shè)置值為一個(gè)以秒為單位的時(shí)間數(shù)Etag用于向客戶端傳送代表實(shí)體內(nèi)容特征的標(biāo)記信息,這些標(biāo)記信息稱為實(shí)體標(biāo)簽,每個(gè)版本的資源的實(shí)體標(biāo)簽是不同的,通過實(shí)體標(biāo)簽可以判斷在不同時(shí)間獲得的同一資源路徑下的實(shí)體內(nèi)容是否相同Location用于通知客戶端獲取請求文檔的新地址,其值為一個(gè)使用絕對路徑的URL地址Retry-After可以與503狀態(tài)碼配合使用,告訴客戶端在什么時(shí)間可以重新發(fā)送請求。也可以與任何一個(gè)3xx狀態(tài)碼配合使用,告訴客戶端處理重定向的最小延時(shí)時(shí)間。Retry-After頭字段的值可以是GMT格式的時(shí)間,也可是一個(gè)以秒為單位的時(shí)間數(shù)3.3.2HTTP響應(yīng)頭HTTP響應(yīng)頭字段頭字段說明Server用于指定服務(wù)器軟件產(chǎn)品的名稱Vary用于指定影響了服務(wù)器所生成的響應(yīng)內(nèi)容的那些請求頭字段名WWW-Authenticate當(dāng)客戶端訪問受口令保護(hù)的網(wǎng)頁文件時(shí),服務(wù)器會在響應(yīng)消息中回送01(Unauthrized)響應(yīng)狀態(tài)碼和WWW-Authoricate響應(yīng)頭,指示客戶端應(yīng)該在Authorization請求頭中使用WWW-Authoricate響應(yīng)頭指定的認(rèn)證方式提供用戶名和密碼信息Proxy-AuthenticateProxy-Authenticate頭字段是針對代理服務(wù)器的用戶信息驗(yàn)證,用法與WWW-Authenticate頭字段類似Refresh用于告訴瀏覽器自動刷新頁面的時(shí)間,它的值是一個(gè)以秒為單位的時(shí)間數(shù)Content-Disposition如果服務(wù)器希望瀏覽器不是直接處理響應(yīng)的實(shí)體內(nèi)容,而是讓用戶選擇將響應(yīng)的實(shí)體內(nèi)容保存到一個(gè)文件中,這需要使用Content-Disposition頭字段3.3.2HTTP響應(yīng)頭HTTP響應(yīng)頭字段—LocationLocation頭字段用于通知客戶端獲取請求文檔的新地址,其值為一個(gè)使用絕對路徑的URL地址。Location響應(yīng)頭字段示例如下所示:Location:Location頭字段和大多數(shù)3xx狀態(tài)碼配合使用,以便通知客戶端自動重新連接到新的地址請求文檔。由于當(dāng)前響應(yīng)并沒有直接返回內(nèi)容給客戶端

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論