




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、HttpHttp協(xié)議概述協(xié)議概述 HTTPHTTP協(xié)議概述協(xié)議概述HTTP協(xié)議定義 超文本傳輸協(xié)議(HyperText TransferProtocol)http是什么? 當(dāng)我們想瀏覽一個網(wǎng)站的時候,只要在瀏覽器的地址欄里輸入網(wǎng)站的地址就可以了,我們在瀏覽器的地址欄里輸入的網(wǎng)站地址叫做URL(統(tǒng)一資源定位符),就像每家每戶都有一個門牌地址一樣,每個網(wǎng)頁也都有一個Internet地址。當(dāng)你在瀏覽器的地址框中輸入一個URL或是單擊一個超級鏈接時,URL就確定了要瀏覽的地址。瀏覽器通過超文本傳輸協(xié)議(HTTP),將Web服務(wù)器上站點(diǎn)的網(wǎng)頁代碼提取出來,并翻譯成網(wǎng)頁。 HttpHttp協(xié)議概述協(xié)議概述
2、Http協(xié)議特點(diǎn) 1.簡單快速:客戶向服務(wù)器請求服務(wù)時,只需傳送請求方法和路徑。 2.靈活:HTTP允許傳輸任意類型的數(shù)據(jù)對象。正在傳輸?shù)念愋陀蒀ontent-Type加以標(biāo)記。 3.無連接:限制每次連接只處理一個請求。理完客戶的請求,即斷開連接。 4.無狀態(tài):HTTP協(xié)議是無狀態(tài)協(xié)議。無狀態(tài)是指協(xié)議對于事務(wù)處理沒有記憶能力。 HttpHttp協(xié)議概述協(xié)議概述http是如何工作的 HttpHttp協(xié)議概述協(xié)議概述請求(request)請求行消息報頭(請求頭)請求正文 HttpHttp協(xié)議概述協(xié)議概述請求行: 請求方法+ 請求路徑+ 所用的協(xié)議請求方法: GETPOSTPUTDELETETRAC
3、E,OPTIONS等這些 我們常用的method有GET和POST所用的協(xié)議: 目前一般常用的是HTTP/1.1,0.9,1.0已經(jīng)基本不用.請求行示例: POST /oris-common-master-portlet/catchmentZone/get.do?mode=edit&displayunit=&Id=2 HTTP/1.1 HttpHttp協(xié)議概述協(xié)議概述GET與POST方法的區(qū)別: 1.在客戶端,Get方式在通過URL提交數(shù)據(jù),數(shù)據(jù)在URL中可以看到;POST方式,數(shù)據(jù)放置在HTMLHEADER內(nèi)提交。 2.GET方式提交的數(shù)據(jù)最多只能有1024字節(jié),而POST則
4、沒有此限制。 3.安全性問題。正如在 1 中提到,使用Get的時候,參數(shù)會顯示在地址欄上,而Post不會,Post安全性方面更為好一點(diǎn)。所以,如果這些數(shù)據(jù)是中文數(shù)據(jù)而且是非敏感數(shù)據(jù),那么使用get;如果用戶輸入的數(shù)據(jù)不是中文字符而且包含敏感數(shù)據(jù),那么還是使用post為好。 HttpHttp協(xié)議概述協(xié)議概述請求頭: 由關(guān)鍵字/值對組成,每行一對,關(guān)鍵字和值用冒號(:)分隔。請求頭標(biāo)通知服務(wù)器有關(guān)于客戶端的功能和標(biāo)識,典型的請求頭標(biāo)有: Accept請求報頭域用于指定客戶端接受哪些類型的信息 Accept-Charset請求報頭域用于指定客戶端接受的字符集 Accept-Encoding請求報頭域
5、類似于Accept,但是它是用于指定可接受的內(nèi)容編碼 Accept-Language請求報頭域類似于Accept,但是它是用于指定一種自然語言。 Authorization請求報頭域主要用于證明客戶端有權(quán)查看某個資源。當(dāng)瀏覽器訪問一個頁面時,如果收到服務(wù)器的響應(yīng)代碼為401(未授權(quán)),可以發(fā)送一個包含Authorization請求報頭域的請求,要求服務(wù)器對其進(jìn)行驗(yàn)證。 Content Length:表示請求消息正文的長度。 From:請求發(fā)送者的email地址,由一些特殊的Web客戶程序使用,瀏覽器不會用到它。 Host(發(fā)送請求時,該報頭域是必需的)Host請求報頭域主要用于指定被請求資源的
6、Internet主機(jī)和端口號,它通常從HTTPURL中提取出來的 User-Agent User-Agent請求報頭域允許客戶端將它的操作系統(tǒng)、瀏覽器和其它屬性告訴服務(wù)器,不過,這個報頭域不是必需的。 Cookie:服務(wù)器存儲在客戶端的信息,每次請求都會將服務(wù)器保存在客戶端的cookies中 HttpHttp協(xié)議概述協(xié)議概述請求頭示例:Host: localhost:8080 Connection: keep-alive Content-Length: 0 Accept: */* Origin: http:/localhost:8080 X-Requested-With: XMLHttpReq
7、uest User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Referer:http:/localhost:8080/web/commenmaster1/commonmaster?p_auth=VyE3Xuy0&p_p_id=commonmasterportlet_WAR_oriscommonmasterportlet&p_p_lifecycle=1&p_p_state=norm
8、al&p_p_mode=view&p_p_col_id=column-1&p_p_col_count=1&_commonmasterportlet_WAR_oriscommonmasterportlet_javax.portlet.action=doRenderPage Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.8 C o o k i e : C O O K I E _ S U P P O R T = t r u e ; C O M P A N Y _ I D = 1 ; ID=66
9、466b63383878647672553d;USER_UUID=IDZcheyfFMV75PPlSrIHk0azUWCYpbNB; LOGIN=74657374; PASSWORD=5937365a764731443241633d; REMEMBER_ME=true; SCREEN_NAME=59426450565851685373493d; JSESSIONID=eQkP15kq8XuYawqVgoDcxuRc; GUEST_LANGUAGE_ID=en_US HttpHttp協(xié)議概述協(xié)議概述請求正文 請求頭和請求正文之間是一個空行,這個行非常重要,它表示請求頭已經(jīng)結(jié)束,接下來的是請求正文
10、。請求正文中可以包含客戶提交的查詢字符串信息:mode=edit&displayunit=&Id=2 HttpHttp協(xié)議概述協(xié)議概述響應(yīng)(response)狀態(tài)行消息報頭(響應(yīng)頭)響應(yīng)正文 HttpHttp協(xié)議概述協(xié)議概述狀態(tài)行: response的第一行是狀態(tài)行,由協(xié)議版本以及數(shù)字狀態(tài)碼和相關(guān)的文本說明組成,HTTP版本+狀態(tài)碼+原因短語 如:HTTP/1.1 200 OK HTTP/1.1 404 Not Found狀態(tài)碼: 1XX信息類(Information),表示收到Web瀏覽器請求,正在進(jìn)一步的處理中 2XX成功類(Successful),表示用戶請求被正確接收,
11、理解和處理例如:200OK 3XX-重定向類(Redirection),表示請求沒有成功,客戶必須采取進(jìn)一步的動作。 4XX-客戶端錯誤(ClientError),表示客戶端提交的請求有錯誤例如:404NOTFound,意味著請求中所引用的文檔不存在。 5XX-服務(wù)器錯誤(ServerError)表示服務(wù)器不能完成對請求的處理:如500 HttpHttp協(xié)議概述協(xié)議概述消息報頭(響應(yīng)頭): 跟請求頭一樣,也是由關(guān)鍵字/值對組成,每行一對,關(guān)鍵字和值用冒號(:)分隔。典型的響應(yīng)頭標(biāo)有: Allow: 服務(wù)器支持哪些請求方法(如GET、POST等)。 Content-Encoding: 文檔的編碼
12、(Encode)方法 Content-Length: 表示內(nèi)容長度 Content-Type:表示后面的文檔屬于什么MIME類型。Servlet默認(rèn)為text/plain,但通常需要顯式地指定為text/htm Date:當(dāng)前的GMT時間 Last-Modified:文檔的最后改動時間 Location:表示客戶應(yīng)當(dāng)?shù)侥睦锶ヌ崛∥臋n Refresh:表示瀏覽器應(yīng)該在多少時間之后刷新文檔,以秒計(jì) Server:服務(wù)器名字。Servlet一般不設(shè)置這個值,而是由Web服務(wù)器自己設(shè)置。 Set-Cookie:設(shè)置和頁面關(guān)聯(lián)的Cookie HttpHttp協(xié)議概述協(xié)議概述請求正文 請求頭和請求正文之間
13、是一個空行,這個行非常重要,它表示請求頭已經(jīng)結(jié)束,接下來的是請求正文。請求正文中可以包含客戶提交的查詢字符串信息:mode=edit&displayunit=&Id=2響應(yīng)正文 響應(yīng)正文是指服務(wù)器返回的文檔,最常見的為HTML網(wǎng)頁,響應(yīng)頭和正文之間也必須用空行分隔 HttpHttp協(xié)議概述協(xié)議概述一些常見的HTTP協(xié)議狀態(tài)碼的含義100 Continue初始的請求已經(jīng)接受,客戶應(yīng)當(dāng)繼續(xù)發(fā)送請求的其余部分101 Switching Protocols服務(wù)器將遵從客戶的請求轉(zhuǎn)換到另外一種協(xié)議200 OK一切正常,對GET和POST請求的應(yīng)答文檔跟在后面201 Created服務(wù)器已
14、經(jīng)創(chuàng)建了文檔,Location頭給出了它的URL。202 Accepted已經(jīng)接受請求,但處理尚未完成。203 Non-Authoritative Information文檔已經(jīng)正常地返回,但一些應(yīng)答頭可能不正確,因?yàn)槭褂玫氖俏臋n的拷貝204 No Content沒有新文檔,瀏覽器應(yīng)該繼續(xù)顯示原來的文檔。205 Reset Content沒有新的內(nèi)容,但瀏覽器應(yīng)該重置它所顯示的內(nèi)容。用來強(qiáng)制瀏覽器清除表單輸入內(nèi)容206 Partial Content客戶發(fā)送了一個帶有Range頭的GET請求,服務(wù)器完成了它 HttpHttp協(xié)議概述協(xié)議概述300 Multiple Choices客戶請求的文檔
15、可以在多個位置找到,這些位置已經(jīng)在返回的文檔內(nèi)列出。如果服務(wù)器要提出優(yōu)先選擇,則應(yīng)該在Location應(yīng)答頭指明。301 Moved Permanently客戶請求的文檔在其他地方,新的URL在Location頭中給出,瀏覽器應(yīng)該自動地訪問新的URL。302 Found類似于301,但新的URL應(yīng)該被視為臨時性的替代,而不是永久性的。303 See Other類似于301/302,不同之處在于,如果原來的請求是POST,Location頭指定的重定向目標(biāo)文檔應(yīng)該通過GET提取304 Not Modified客戶端有緩沖的文檔并發(fā)出了一個條件性的請求(一般是提供If-Modified-Since
16、頭表示客戶只想比指定日期更新的文檔)。服務(wù)器告訴客戶,原來緩沖的文檔還可以繼續(xù)使用。305 Use Proxy客戶請求的文檔應(yīng)該通過Location頭所指明的代理服務(wù)器提取400 Bad Request請求出現(xiàn)語法錯誤。401 Unauthorized客戶試圖未經(jīng)授權(quán)訪問受密碼保護(hù)的頁面。應(yīng)答中會包含一個WWW-Authenticate頭,瀏覽器據(jù)此顯示用戶名字/密碼對話框,然后在填寫合適的Authorization頭后再次發(fā)出請求。 HttpHttp協(xié)議概述協(xié)議概述403 Forbidden資源不可用。404 Not Found無法找到指定位置的資源405 Method Not Allowe
17、d請求方法(GET、POST、HEAD、Delete、PUT、TRACE等)對指定的資源不適用。406 Not Acceptable指定的資源已經(jīng)找到,但它的MIME類型和客戶在Accpet頭中所指定的不兼容407 Proxy Authentication Required類似于401,表示客戶必須先經(jīng)過代理服務(wù)器的授權(quán)。408 Request Timeout在服務(wù)器許可的等待時間內(nèi),客戶一直沒有發(fā)出任何請求??蛻艨梢栽谝院笾貜?fù)同一請求。409 Conflict通常和PUT請求有關(guān)。由于請求和資源的當(dāng)前狀態(tài)相沖突,因此請求不能成功。410 Gone所請求的文檔已經(jīng)不再可用,而且服務(wù)器不知道應(yīng)該
18、重定向到哪一個地址。它和404的不同在于,返回407表示文檔永久地離開了指定的位置,而404表示由于未知的原因文檔不可用。411 Length Required服務(wù)器不能處理請求,除非客戶發(fā)送一個Content-Length頭。 HttpHttp協(xié)議概述協(xié)議概述412 Precondition Failed請求頭中指定的一些前提條件失敗413 Request Entity Too Large目標(biāo)文檔的大小超過服務(wù)器當(dāng)前愿意處理的大小。如果服務(wù)器認(rèn)為自己能夠稍后再處理該請求,則應(yīng)該提供一個Retry-After頭414 Request URI Too LongURI太長416 Requested
19、 Range Not Satisfiable服務(wù)器不能滿足客戶在請求中指定的Range頭501 Not Implemented服務(wù)器不支持實(shí)現(xiàn)請求所需要的功能。例如,客戶發(fā)出了一個服務(wù)器不支持的PUT請求502 Bad Gateway服務(wù)器作為網(wǎng)關(guān)或者代理時,為了完成請求訪問下一個服務(wù)器,但該服務(wù)器返回了非法的應(yīng)答503 Service Unavailable服務(wù)器由于維護(hù)或者負(fù)載過重未能應(yīng)答。例如,Servlet可能在數(shù)據(jù)庫連接池已滿的情況下返回503。服務(wù)器返回503時可以提供一個Retry-After頭504 Gateway Timeout由作為代理或網(wǎng)關(guān)的服務(wù)器使用,表示不能及時地從遠(yuǎn)
20、程服務(wù)器獲得應(yīng)答505 HTTP Version Not Supported服務(wù)器不支持請求中所指明的HTTP版本 HttpHttp協(xié)議概述協(xié)議概述一些術(shù)語u連接(connection)為通信而在兩個程序間建立的傳輸層虛擬電路。u客戶端(client)為發(fā)送請求建立連接的程序。u用戶代理(useragent)初始化請求的客戶端程序。常見的如瀏覽器,編輯器,蜘蛛(可網(wǎng)絡(luò)穿越的機(jī)器人),或其他的終端用戶工具u服務(wù)器(Server)服務(wù)器是這樣一個應(yīng)用程序,它同意請求端的連接,并發(fā)送響應(yīng)(response)。源服務(wù)器(Originserver)存在資源或者資源在其上被創(chuàng)建的服務(wù)器(server)被成
21、為源服務(wù)器(originserver)。u代理(Proxy)代理是一個中間程序,它既可以擔(dān)當(dāng)客戶端的角色也可以擔(dān)當(dāng)服務(wù)器的角色。代理代表客戶端向服務(wù)器發(fā)送請求??蛻舳说恼埱蠼?jīng)過代理,會在代理內(nèi)部得到服務(wù)或者經(jīng)過一定的轉(zhuǎn)換轉(zhuǎn)至其他服務(wù)器。一個代理必須能同時實(shí)現(xiàn)本規(guī)范中對客戶端和服務(wù)器所作的要求。 HttpHttp協(xié)議概述協(xié)議概述u網(wǎng)關(guān)(gateway)網(wǎng)關(guān)其實(shí)是一個服務(wù)器,扮演著代表其它服務(wù)器為客戶端提供服務(wù)的中間者。與代理(proxy)不同,網(wǎng)關(guān)接收請求,仿佛它就是請求資源的源服務(wù)器。請求的客戶端可能覺察不到它正在同網(wǎng)關(guān)通信。u年齡(age)一個響應(yīng)的年齡是從被源服務(wù)器發(fā)送或被源服務(wù)器成功驗(yàn)證
22、到現(xiàn)在的時間。u保鮮(Fresh)如果一個響應(yīng)的年齡還沒有沒有超過保鮮壽命(freshnesslifetime),那么它就是保鮮的.。u陳舊(Stale)一個響應(yīng)的年齡已經(jīng)超過了它的保鮮壽命(freshnesslifetime),那么就是陳舊的.u緩存(cache)緩存是程序響應(yīng)消息的本地存儲。緩存是一個子系統(tǒng),控制消息的存儲、獲取和刪除。緩存里存放可緩存的響應(yīng)(cacheableresponse)為的是減少對將來同樣請求的響應(yīng)時間和網(wǎng)絡(luò)帶寬消耗。任一客戶端或服務(wù)器都可能含有緩存,但緩存不能存在于一個充當(dāng)隧道(tunnel)的服務(wù)器里。 HttpHttp協(xié)議概述協(xié)議概述緩存的處理流程 Http
23、Http協(xié)議概述協(xié)議概述緩存處理的具體步驟1 請求處理用戶發(fā)起一個http請求,緩存獲取到URL,根據(jù)URL查找是否有匹配的副本。2 新鮮度檢測如果緩存中存在所請求資源的副本,則進(jìn)行新鮮度檢測。新鮮度檢測指的是,HTTP發(fā)起一個請求時,發(fā)現(xiàn)緩存中有相應(yīng)的副本,接著就會檢查這個副本有沒有過期,如果沒有過期,直接使用。如果已經(jīng)過期,則進(jìn)行再驗(yàn)證。具體的實(shí)現(xiàn)在下面會介紹。3 服務(wù)器再驗(yàn)證緩存中的文檔過期了并不代表他和服務(wù)器上的不一樣,所以這個時候就需要問問服務(wù)器,過期的這段時間里這個文檔到底有沒有改變。如果改變了,緩存就會獲取一份新的文檔副本,然后發(fā)送給客戶端。如果沒有改變,緩存只需要獲取新的首部,
24、包括一個新的過期時間,并對緩存中的首部更新。4 創(chuàng)建響應(yīng)并返回我們希望緩存看起來就像是來自原始服務(wù)器一樣,緩存將已緩存的服務(wù)器響應(yīng)首部作為響應(yīng)首部,發(fā)送給客戶端。 HttpHttp協(xié)議概述協(xié)議概述保質(zhì)期的實(shí)現(xiàn)HTTP中,通過Cache-Control首部和Expires首部為文檔指定了過期時間,通過對過期時間的判斷,緩存就可以知道文檔是不是在保質(zhì)期內(nèi)。Expires首部和Cache-Control:max-age首部都是來告訴緩存文檔有沒有過期,為什么需要兩個響應(yīng)首部來做這件簡單的事情了?其實(shí)這一切都是歷史原因,Expires首部是HTTP 1.0中提出來的,因?yàn)樗褂玫氖墙^對日期,如果服務(wù)端
25、和客戶端時鐘不同步的話(實(shí)際上這種情況非常常見),緩存可能就會認(rèn)為文檔已經(jīng)過了保質(zhì)期。HTTP 1.1為了修正這個問題,引入了Cache-Control:max-age首部,這個首部使用相對時間來控制保質(zhì)期,讓一切變得更加合理。舉個例子,我們買了一瓶汽水,如果使用Expires首部來標(biāo)注保質(zhì)期,就會這么寫:飲料過期時間:2012年12月21日,如果某個2貨不知道今天多少號,他還真不知道這飲料過期沒,我小時候飲料都這么寫。后來,有個挺有名的賣牛奶的,大概就叫蒙牛,他發(fā)明了一種標(biāo)注保質(zhì)期的方法,他怎么搞了?他這么寫:保質(zhì)期:12個月,行,牛逼了,我牛奶一年前就生產(chǎn)出來的牛奶,今天要發(fā)給廠家,發(fā)之前,先往包裝上印上生產(chǎn)日期(當(dāng)然是印發(fā)貨那天),然后告訴你,明年才過期,這多聰明,搞成相對的,毒死你。也許HTTP 1.1借鑒了這個偉大的發(fā)明,于是就有了Cache-Control:max-age首部。 HttpHttp協(xié)議概述協(xié)議概述服務(wù)器再驗(yàn)證的實(shí)現(xiàn)緩存要問問服務(wù)器,牛奶已經(jīng)過期了,到底還能不能使用。HTTP中,使用兩個請求請首部來完成這個功能:If-Modifi
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 頂崗老師班會課件模板
- 金屬冶煉負(fù)責(zé)人安管人員培訓(xùn)
- 音樂課國防教育課件
- 水肌酸產(chǎn)品項(xiàng)目運(yùn)營管理方案
- 電網(wǎng)側(cè)獨(dú)立儲能示范項(xiàng)目經(jīng)濟(jì)效益和社會效益分析報告
- 城鎮(zhèn)污水管網(wǎng)建設(shè)項(xiàng)目人力資源管理方案(模板范文)
- xx片區(qū)城鄉(xiāng)供水一體化項(xiàng)目建設(shè)管理方案
- 先進(jìn)金屬材料行動計(jì)劃
- 無人駕駛配送車輛定位精度提升
- 2025年井下多功能測振儀項(xiàng)目建議書
- 裝配式結(jié)構(gòu)吊裝施工計(jì)算書
- 中考語文專題復(fù)習(xí):傳統(tǒng)文化常識100題-專項(xiàng)練習(xí)題(含答案)
- 《交替?zhèn)髯g1》課程教學(xué)大綱
- 梁平舊亂賬清理設(shè)計(jì)方案
- 絲蟲病藥物研發(fā)研究
- 雙減背景下課后服務(wù)心得
- 工傷認(rèn)定申請表(范表)
- 2023護(hù)理分級標(biāo)準(zhǔn)(代替WS-T431-2013)
- 242個國家中英文名稱對照
- 多聯(lián)機(jī)技術(shù)與產(chǎn)品介紹-課件
- 易制毒化學(xué)品進(jìn)貨采購管理制度
評論
0/150
提交評論