




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、HTTP協議-超文本傳送協議2012-12-8HTTP(超文本傳輸協議)是一個基于請求與響應模式的、無狀態的、應用層的協議。關鍵詞1.連接(Connection):一個傳輸層的實際環流,它是建立在兩個相互通訊的應用程序之間。 2.消息(Message):HTTP通訊的基本單位,包括一個結構化的八元組序列并通過連接傳輸。3.請求(Request):一個從客戶端到服務器的請求信息包括應用于資源的方法、資源的標識符和協議的版本號。4.響應(Response):一個從服務器返回的信息包括HTTP協議的版本號、請求的狀態(例如“成功”或“沒找到”)和文檔的MIME類型。5.資源(Resourc
2、e):由URI標識的網絡數據對象或服務。6.實體(Entity):數據資源或來自服務資源的回映的一種特殊表示方法,它可能被包圍在一個請求或響應信息中。一個實體包括實體頭信息和實體的本身內容。7.客戶機(Client):一個為發送請求目的而建立連接的應用程序。8.用戶代理(User agent):初始化一個請求的客戶機。它們是瀏覽器、編輯器或其它用戶工具。9.服務器(Server):一個接受連接并對請求返回信息的應用程序。10.源服務器(Origin server):是一個給定資源可以在其上駐留或被創建的服務器。11.代理(Proxy):一個中間程序,它可以充當一個服務器,也
3、可以充當一個客戶機,為其它客戶機建立請求。請求是通過可能的翻譯在內部或經過傳遞到其它的服務器中。一個代理在發送請求信息之前,必須解釋并且如果可能重寫它。代理經常作為通過防火墻的客戶機端的門戶,代理還可以作為一個幫助應用來通過協議處理沒有被用戶代理完成的請求。12.網關(Gateway):一個作為其它服務器中間媒介的服務器。與代理不同的是,網關接受請求就好象對被請求的資源來說它就是源服務器;發出請求的客戶機并沒有意識到它在同網關打交道。網關經常作為通過防火墻的服務器端的門戶,網關還可以作為一個協議翻譯器以便存取那些存儲在非HTTP系統中的資源。13.通道(Tunnel):是作為兩個連接中繼的中介
4、程序。一旦激活,通道便被認為不屬于HTTP通訊,盡管通道可能是被一個HTTP請求初始化的。當被中繼的連接兩端關閉時,通道便消失。當一個門戶(Portal)必須存在或中介(Intermediary)不能解釋中繼的通訊時通道被經常使用。14.緩存(Cache):反應信息的局域存儲。HTTP協議URLHTTP URL的格式為:http:/host":"portabs_pathhttp表示要通過HTTP協議來定位網絡資源; host表示合法的Internet主機域名或者IP地址;port指定一個端口號,為空則使用缺省端口80;abs_path指定請求資源的URI(絕對路徑);如果U
5、RL中沒有給abs_path,那么當它作為請求URI時,須以“/”的形式給出,通常這個工作瀏覽器自動完成。HTTP協議請求(request)HTTP 請求(request)由三部分組成,分別是:請求行、消息報頭、請求正文。請求消息格式請求行通用信息頭|請求頭|實體頭CRLF(回車換行)實體內容注解:頭信息又稱為元信息,即信息的信息,利用元信息可以實現有條件的請求或應答 。請求頭告訴服務器怎樣解釋本次請求,主要包括用戶可以接受的數據類型、壓縮方法和語言等。實體頭實體信息類型、長度、壓縮方法、最后一次修改時間、數據有效期等。實體請求或應答對象本身。請求行請求行以一個方法符號開頭,以空格分
6、開,后面跟著請求的URI和協議的版本。格式如下:Method Request-URI HTTP-Version CRLF(即:方法+空格+請求URI+空格+版本號+回車換行)例:GET/index.html HTTP/1.1 POST 40:8080/index.jsp HTTP/1.1其中:Method表示請求方法; Request-URI是一個統一資源標識符; HTTP-Version表示請求的HTTP 協議版本; CRLF表示回車和換行(除了作為結尾的CRLF外,不允許出現單獨的CR或LF字符)。請求方法請求方法(所有方法全為大寫)有多種,各個方法的
7、解釋如下:GETGET請求獲取Request-URI所標識的資源,向特定的資源發出請求(注意:GET方法不應當被用于產生“副作用”的操作中,例如在WebApp中。其中一個原因是GET可能會被網絡蜘蛛等隨意訪問。)。POSTPOST在Request-URI所標識的資源后附加新的數據,向指定資源提交數據進行處理請求(例如提交表單或者上傳文件)。數據被包含在請求體中。POST請求可能會導致新的資源的建立和/或已有資源的修改。HEADHEAD請求獲取由Request-URI所標識的資源的響應消息報頭,向服務器索要與GET請求相一致的響應,只不過響應體將不會被返回。這一方法可以在不必傳輸整個響應內容的情
8、況下,就可以獲取包含在響應消息頭中的元信息。PUTPUT請求服務器存儲一個資源,并用Request-URI作為其標識,向指定資源位置上傳其最新內容。DELETEDELETE請求服務器刪除Request-URI所標識的資源。TRACETRACE請求服務器回送收到的請求信息,主要用于測試或診斷,回顯服務器收到的請求,主要用于測試或診斷。CONNECTCONNECT保留將來使用,TTP/1.1協議中預留給能夠將連接改為管道方式的代理服務器。OPTIONSOPTIONS請求查詢服務器的性能,或者查詢與資源相關的選項和需求,返回服務器針對特定資源所支持的HTTP請求方法。也可以利用向Web服務器發送
9、39;*'的請求來測試服務器的功能性。GET方法:在瀏覽器的地址欄中輸入網址的方式訪問網頁時,瀏覽器采用GET方法向服務器獲取資。POST方法要求被請求服務器接受附在請求后面的數據,常用于提交表單。HEAD方法與GET方法幾乎是一樣的,對于HEAD請求的回應部分來說,它的HTTP頭部中包含的信息與通過GET請求所得到的信息是相同的。利用這個方法,不必傳輸整個資源內容,就可以得到Request-URI所標識的資源的信息。該方法常用于測試超鏈接的有效性,是否可以訪問,以及最近是否更新。GET方法通常沒有消息主體,支持最大1024個字節的查詢字符串,POST方法沒有限制。POST方法把查詢字
10、符串放在消息主體中傳輸,因此比GET方法支持更多的數據類型。方法名稱是區分大小寫的。當某個請求所針對的資源不支持對應的請求方法的時候,服務器應當返回狀態碼405(Method Not Allowed);當服務器不認識或者不支持對應的請求方法的時候,應當返回狀態碼501(Not Implemented)。 HTTP服務器至少應該實現GET和HEAD方法,其他方法都是可選的。當然,所有的方法支持的實現都應當符合下述的方法各自的語義定義。此外,除了上述方法,特定的HTTP服務器還能夠擴展自定義的方法。請求報頭請求報頭允許客戶端向服務器端傳遞請求的附加信息以及客戶端自身的信息。常用的請求報頭:Host
11、Host請求報頭域主要用于指定被請求資源的Internet主機和端口號,它通常從HTTP URL中提取出來的(發送請求時,該報頭域是必需的,否則系統會以400狀態碼返回。)。例:我們在瀏覽器中輸入:40/index.html瀏覽器發送的請求消息中,就會包含Host請求報頭域,如下:Host:40此處使用缺省端口號80,若指定了端口號8088,則變成:Host:40: 8088AcceptAccept請求報頭域用于指定客戶端接受哪些類型的信息.例:Accept:image/gif,表明客戶端希望接受GIF圖象格式的資源; Accept:
12、text/html表明客戶端希望接受html文本。Accept-CharsetAccept-Charset請求報頭域用于指定客戶端接受的字符集。例:Accept-Charset:iso-8859-1,gb2312. 如果在請求消息中沒有設置這個域,缺省是任何字符集都可以接受。Accept-EncodingAccept-Encoding請求報頭域類似于Accept但是它是用于指定可接受的內容編碼。 例:Accept-Encoding:gzip.deflate. 如果請求消息中沒有設置這個域服務器假定客戶端對各種內容編碼都可以接受。Accept-LanguageAccept-Language請求報
13、頭域類似于Accept,但是它是用于指定一種自然語言。例:Accept-Language:zh-cn. 如果請求消息中沒有設置這個報頭域 , 服務器假定客戶端對各種語言都可以接受。AuthorizationAuthorization 請求報頭域主要用于證明客戶端有權查看某個資源。當瀏覽器訪問一個頁面時,如果收到服務器的響應代碼為401(未授權),可以發送一個包含Authorization請求報頭域的請求,要求服務器對其進行驗證。User-Agent我們上網登陸論壇的時候,往往會看到一些歡迎信息,其中列出了你的操作系統的名稱和版本,你所使用的瀏覽器的名稱和版本,實際上服務器應用程序就是從User
14、-Agent這個請求報頭域中獲取到這些信息 。User-Agent請求報頭域允許客戶端將它的操作系統、瀏覽器和其它屬性告訴服務器。不過,這個報頭域不是必需的,如果我們自己編寫一個瀏覽器,不使用 User-Agent請求報頭域,那么服務器端就無法得知我們的信息了。CookieCookie:最重要的header, 將cookie的值發送給HTTP 服務器RefererReferer頭域允許客戶端指定請求uri的源資源地址,這可以允許服務器生成回退鏈表,可用來登陸、優化cache等。它也允許廢除的或錯誤的連接由于維護的目的被追蹤。如果請求的uri沒有自己的uri地址,Referer不能被發送。如果指
15、定的是部分uri地址,則此地址應該是一個相對地址。作用: 提供了Request的上下文信息的服務器,告訴服務器我是從哪個鏈接過來的,比如從我主頁上鏈接到一個朋友那里,他的服務器就能夠從HTTP Referer中統計出每天有多少用戶點擊我主頁上的鏈接訪問他的網站。例如: Referer:RangeRange頭域可以請求實體的一個或者多個子范圍。例如:表示頭500個字節:bytes=0-499表示第二個500字節:bytes=500-999表示最后500個字節:bytes=-500表示500字節以后的范圍:bytes=500-第一個和最后一個字節:bytes=0-0,-1同時指定幾個范圍:byte
16、s=500-600,601-999但是服務器可以忽略此請求頭,如果無條件GET包含Range請求頭,響應會以狀態碼206(PartialContent)返回而不是以200(OK)。If-Modified-SinceIf-Modified-Since是標準的HTTP請求頭標簽,在發送HTTP請求時,把瀏覽器端緩存頁面的最后修改時間一起發到服務器去,服務器會把這個時間與服務器上實際文件的最后修改時間進行比較。如果時間一致,那么返回HTTP狀態碼304(不返回文件內容),客戶端接到之后,就直接把本地緩存文件顯示到瀏覽器中。如果時間不一致,就返回HTTP狀態碼200和新的文件內容,客戶端接到之后,會丟
17、棄舊文件,把新文件緩存起來,并顯示到瀏覽器中。ETags和If-None-Match是一種常用的判斷資源是否改變的方法。類似于Last-Modified和HTTP-IF-MODIFIED-SINCE。但是有所不同的是Last-Modified和HTTP-IF-MODIFIED-SINCE只判斷資源的最后修改時間,而ETags和If-None-Match可以是資源任何的任何屬性。ETags和If-None-Match的工作原理是在HTTP Response中添加ETags信息。當客戶端再次請求該資源時,將在HTTP Request中加入If-None-Match信息(ETags的值)。如果服務器
18、驗證資源的ETags沒有改變(該資源沒有改變),將返回一個304狀態;否則,服務器將返回200狀態,并返回該資源和新的ETags。請求消息舉例GET /form.html HTTP/1.1 (CRLF)Host: (CRLF)Connection:Keep-Alive (CRLF)Accept:image/gif,image/x-xbitmap,image/jpeg,application/x-shockwave-flash,application/vnd.ms-excel,application/vnd.ms-powerpoint,application/msword,*/* (CRLF)U
19、ser-Agent:Mozilla/4.0(compatible;MSIE6.0;Windows NT 5.0) (CRLF)Accept-Encoding:gzip,deflate (CRLF)Accept-Language:zh-cn (CRLF)Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3(CRLF)If-Modified-Since:Wed,05 Jan 2007 11:21:25 GMT (CRLF)If-None-Match:W/"80b1a4c018f3c41:8317" (CRLF)Cookie: JSESSIONID=17
20、CF87FA2178C4EC670E92A11CC18F48.tomcat243HTTP協議響應(response)在接收和解釋請求消息后,服務器返回一個 HTTP 響應消息。HTTP 響應也是由三個部分組成,分別是:狀態行、消息報頭、響應正文。響應消息格式狀態行通用信息頭|響應頭|實體頭CRLF實體內容狀態行狀態行格式如下:HTTP-Version Status-Code Reason-Phrase CRLF(即:版本號+空格+狀態碼+空格+原因+回車換行)例:HTTP/1.0 200 OK HTTP/1.1 400 Bad Request其中:HTTP-Version 表示服務器 HTTP
21、 協議的版本; Status-Code 表示服務器發回的響應狀態代碼; Reason-Phrase 表示狀態代碼的文本描述。狀態代碼:狀態代碼有三位數字組成,第一個數字定義了響應的類別,且有五種可能取值:1xx :指示信息-表示請求已接收,繼續處理2xx :成功-表示請求已被成功接收、理解、接受3xx :重定向-要完成請求必須進行更進一步的操作4xx :客戶端錯誤-請求有語法錯誤或請求無法實現5xx :服務器端錯誤-服務器未能實現合法的請求常見狀態代碼、狀態描述、說明:200 OK:請求成功400 Bad Request:客戶端請求有語法錯誤,不能被服務器所理解;401 Unauthorize
22、d:請求未經授權,這個狀態代碼必須和WWW-Authenticate報頭域一起使用;403 Forbidden:服務器收到請求,但是拒絕提供服務;404 Not Found:請求資源不存在(eg :輸入了錯誤的 URL);500 Internal Server Error:服務器發生不可預期的錯誤;503 Server Unavailable:服務器當前不能處理客戶端的請求,一段時間后,可能恢復正常。響應報頭響應報頭允許服務器傳遞不能放在狀態行中的附加響應信息,以及關于服務器的信息和對Request-URI 所標識的資源進行下一步訪問的信息。常用的響應報頭:LocationLocation響應
23、報頭域用于重定向接受者到一個新的位置。Location響應報頭域常用在更換域名的時候。ServerServer響應報頭域包含了服務器用來處理請求的軟件信息。與User-Agent請求報頭域是相對應的。指明HTTP服務器的軟件信息。例:Server:Apache-Coyote/1.1X-AspNet-Version作用:如果網站是用ASP.NET開發的,這個header用來表示ASP.NET的版本。例如: X-AspNet-Version: 4.0.30319X-Powered-By作用:表示網站是用什么技術開發的例如: X-Powered-By: ASP.NETWWW-Authenticate
24、WWW-Authenticate響應報頭域必須被包含在401(未授權的)響應消息中,客戶端收到401響應消息時候 ,并發送Authorization報頭域請求服務器對其進行驗證時,服務端響應報頭就包含該報頭域。例:WWW-Authenticate:Basic realm="Basic Auth Test!" :可以看出服務器對請求資源采用的是基本驗證機制。P3PP3P作用: 用于跨域設置Cookie, 這樣可以解決iframe跨域訪問cookie的問題。例如: P3P: CP=CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM
25、STA PRE COM NAV OTC NOI DSP CORSet-CookieSet-Cookie作用:非常重要的header, 用于把cookie 發送到客戶端瀏覽器,每一個寫入cookie都會生成一個Set-Cookie.例如:Set-Cookie:sc=4c31523a;path=/;domain=響應消息舉例HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Set-Cookie:JSESSIONID=17CF87FA2178C4EC670E92A11CC18F48.tomcat243; Path=/seeyon Last-Modified: Wed
26、, 17 Oct 2007 03:01:41 GMTContent-Type: text/html;charset=UTF-8 Content-Language: zh-CN Transfer-Encoding: chunked Content-Encoding: gzip Vary: Accept-Encoding Date: Fri, 30 Nov 2012 03:52:19 GMTHTTP消息報頭HTTP 消息由客戶端到服務器的請求和服務器到客戶端的響應組成。請求消息和響應消息都是由開始行(對于請求消息,開始行就是請求行,對于響應消息,開始行就是狀態行),消息報頭(可選),空行(只有CR
27、LF的行),消息正文(可選)組成。HTTP 消息報頭包括:普通報頭、請求報頭、響應報頭、實體報頭。每一個報頭域都是由名字+“:”+空格+值組成,消息報頭域的名字是大小寫無關的。普通報頭在普通報頭中,有少數報頭域用于所有的請求和響應消息,但并不用于被傳輸的實體,只用于傳輸的消息。Cache-ControlCache-Control用于指定緩存指令,緩存指令是單向的(響應中出現的緩存指令在請求中未必會出現),且是獨立的(一個消息的緩存指令不會影響另一個消息處理的緩存機制),HTTP1.0使用的類似的報頭域為Pragma。Pragma作用:防止頁面被緩存,在HTTP/1.1版本中,它和Cache-C
28、ontrol:no-cache作用一樣,且Pargma只有這一個用法。如:Pragema:no-cache。注:在HTTP/1.0版本中,只實現了Pragema:no-cache, 沒有實現Cache-Control.請求時的緩存指令包括:no-cache(用于指示請求或響應消息不能緩存)、no-store、max-age、max-stale、min-fresh、only-if-cached;響應時的緩存指令包括:public(可以被任何緩存所緩存)、private(內容只緩存到私有緩存中)、no-cache(所有內容都不會被緩存)、no-store、no-transform、must-rev
29、alidate、proxy-revalidate、max-age、s-maxage.DateDate普通報頭域表示消息產生的日期和時間。ConnectionConnection普通報頭域允許發送指定連接的選項。例如:Connection: keep-alive 當一個網頁打開完成后,客戶端和服務器之間用于傳輸HTTP數據的TCP連接不會關閉,如果客戶端再次訪問這個服務器上的網頁,會繼續使用這一條已經建立的連接例如:Connection: close 代表一個Request完成后,客戶端和服務器之間用于傳輸HTTP數據的TCP連接會關閉,當客戶端再次發送Request,需要重
30、新建立TCP連接。實體報頭請求和響應消息都可以傳送一個實體。一個實體由實體報頭域和實體正文組成,但并不是說實體報頭域和實體正文要在一起發送,可以只發送實體報頭域。實體報頭定義了關于實體正文(例:有無實體正文)和請求所標識的資源的元信息。常用的實體報頭:Content-EncodingContent-Encoding實體報頭域被用作媒體類型的修飾符,它的值指示了已經被應用到實體正文的附加內容的編碼,因而要獲得Content-Type報頭域中所引用的媒體類型,必須采用相應的解碼機制。Content-Encoding這樣用于記錄文檔的壓縮方法。WEB服務器表明自己使用了什么壓縮方法(gzip,deflate)壓縮響應中的對象。例:Content-Enc
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 員工勞動協議書范本
- 商場改衣坊合同協議
- 民宿投資入股合同協議
- 商場員工聘用合同協議
- 2025年管理信息系統應用軟件工程合同
- 模特服裝買賣合同協議
- 樓頂大字施工合同協議
- 2025【上海市房產轉讓代理服務合同】上海市房產交易合同示范文本
- 總公司和分總司協議合同
- 2025漁業養殖承包合同樣本
- 2024無人機測評規范
- 術中停電應急預案
- 【高分復習筆記】許莉婭《個案工作》(第2版)筆記和課后習題詳解
- 國有資產投資管理公司組建方案(3篇)
- 大學生心理健康教育(石家莊工程職業學院)知到智慧樹答案
- GB/T 22517.5-2024體育場地使用要求及檢驗方法第5部分:足球場地
- 幼兒園的社會交往能力
- 部隊道路交通安全法
- 農業昆蟲學-形考測試一-國開(ZJ)-參考資料
- 2024-2030年電線電纜產業發展分析及發展趨勢與投資前景預測報告
- 化工廠拆除施工方案
評論
0/150
提交評論