傳智播客-張孝祥Java-Web-HTTP協(xié)議詳解資料_第1頁
傳智播客-張孝祥Java-Web-HTTP協(xié)議詳解資料_第2頁
傳智播客-張孝祥Java-Web-HTTP協(xié)議詳解資料_第3頁
傳智播客-張孝祥Java-Web-HTTP協(xié)議詳解資料_第4頁
傳智播客-張孝祥Java-Web-HTTP協(xié)議詳解資料_第5頁
已閱讀5頁,還剩21頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

張孝祥IT課堂

-深入體驗JavaWeb開發(fā)內(nèi)幕第3講HTTP協(xié)議詳解了解HTTP懇求行與狀態(tài)行通用信息頭懇求頭響應(yīng)頭實體頭擴(kuò)展頭了解HTTP

HTTP簡介HTTP1.0的會話方式HTTP1.1與HTTP1.0的比較HTTP消息的格式HTTP消息頭

HTTP簡介

WEB掃瞄器與WEB效勞器之間的一問一答的交互過程必需遵循肯定的規(guī)章,這個規(guī)章就是HTTP協(xié)議。HTTP是hypertexttransferprotocol〔超文本傳輸協(xié)議〕的簡寫,它是TCP/IP協(xié)議集中的一個應(yīng)用層協(xié)議,用于定義WEB掃瞄器與WEB效勞器之間交換數(shù)據(jù)的過程以及數(shù)據(jù)本身的格式。HTTP協(xié)議的版本 HTTP/1.0、HTTP/1.1、HTTP-NG深入理解HTTP協(xié)議,對治理和維護(hù)簡單的WEB站點、開發(fā)具有特殊用途的WEB效勞器程序具有直接影響。HTTP1.0的會話方式

四個步驟:支持代理:掃瞄器與WEB效勞器的連接過程是短暫的,每次連接只處理一個懇求和響應(yīng)。對每一個頁面的訪問,掃瞄器與WEB效勞器都要建立一次單獨的連接。掃瞄器到WEB效勞器之間的全部通訊都是完全獨立分開的懇求和響應(yīng)對。掃瞄器訪問多圖網(wǎng)頁的過程網(wǎng)頁文檔圖片1圖片2圖片3WEB效勞器掃瞄器②①③④HTTP1.1與HTTP1.0的比較HTTP1.1的特點 在一個TCP連接上可以傳送多個HTTP懇求和響應(yīng) 多個懇求和響應(yīng)過程可以重疊進(jìn)展 增加了更多的懇求頭和響應(yīng)頭HTTP懇求消息舉例:GET/books/java.htmlHTTP/1.1Accept:*/*Accept-Language:en-usConnection:Keep-AliveHost:localhostContent-Length:0User-Agent:Mozilla/4.0Accept-Encoding:gzip,deflate懇求消息的構(gòu)造: 一個懇求行、假設(shè)干消息頭、以及實體內(nèi)容,其中的一些消息頭和實體內(nèi)容都是可選的,消息頭和實體內(nèi)容之間要用空行隔開。懇求行

一個空行

多個消息頭HTTP響應(yīng)消息舉例:HTTP/1.1200OKServer:Microsoft-IIS/5.0Date:Thu,13Jul202305:46:53GMTContent-Length:2291Content-Type:text/htmlCache-control:private<HTML><BODY>……響應(yīng)消息的構(gòu)造: 一個狀態(tài)行、假設(shè)干消息頭、以及實體內(nèi)容,其中的一些消息頭和實體內(nèi)容都是可選的,消息頭和實體內(nèi)容之間要用空行隔開。

狀態(tài)行

一個空行

多個消息頭

實體內(nèi)容HTTP消息其他細(xì)節(jié)響應(yīng)消息的實體內(nèi)容就是網(wǎng)頁文件的內(nèi)容,也就是在掃瞄器中使用查看源文件的方式所看到的內(nèi)容。一個使用GET方式的懇求消息中不能包含實體內(nèi)容,只有使用POST、PUT和DELETE方式的懇求消息中才可以包含實體內(nèi)容。對于HTTP1.1來說,假設(shè)HTTP消息中包括實體內(nèi)容,且沒有承受chunked傳輸編碼方式,那么消息頭局部必需包含內(nèi)容長度的字段,否則,客戶和效勞程序就無法知道實體內(nèi)容何時完畢。在HTTP協(xié)議中,還可以使用簡潔的懇求消息和響應(yīng)消息,它們都沒有消息頭局部。簡潔的懇求消息只能用于GET方式,且懇求行中不用指定HTTP版本號。對于簡潔的懇求消息,效勞器返回簡潔的響應(yīng)消息,簡潔的響應(yīng)消息中只返回實體內(nèi)容。HTTP消息頭

使用消息頭,可以實現(xiàn)HTTP客戶機(jī)與效勞器之間的條件懇求和應(yīng)答,消息頭相當(dāng)于效勞器和掃瞄器之間的一些暗號指令。每個消息頭包含一個頭字段名稱,然后依次是冒號、空格、值、回車和換行符。 舉例:Accept-Language:en-us消息頭字段名是不區(qū)分大小寫的,但習(xí)慣上將每個單詞的第一個字母大寫。整個消息頭局部中的各行消息頭可按任何挨次排列。消息頭又可以分為通用信息頭、懇求頭、響應(yīng)頭、實體頭等四類。很多懇求頭字段都允許客戶端在值局部指定多個可承受的選項,多個項之間以逗號分隔。 舉例:Accept-Encoding:gzip,compress有些頭字段可以消失屢次,例如,響應(yīng)消息中可以包含有多個“Warning”頭字段。URL編碼懇求行和HTTP消息頭中不能消失中文字符,中文字符需要依據(jù)URL編碼方式轉(zhuǎn)換成英文字符。規(guī)章:將空格轉(zhuǎn)換為加號〔+〕。對0-9,a-z,A-Z之間的字符保持不變。對于全部其他的字符,用這個字符的當(dāng)前字符集編碼在內(nèi)存中的十六進(jìn)制格式表示,并在每個字節(jié)前加上一個百分號〔%〕。如字符“+”用%2B表示,字符“=”用%3D表示,字符“&”用%26表示,每個中文字符在內(nèi)存中占兩個字節(jié),字符“中”用%D6%D0表示,字符“國”用%B9%FA表示。對于空格也可以直接使用其十六進(jìn)制編碼方式,即用%20表示,而不是將它轉(zhuǎn)換成加號〔+〕。使用類完成url編碼。使用URL編碼解決中文名稱的靜態(tài)文件下載和動態(tài)文件下載的問題。

懇求行與狀態(tài)行懇求行 格式:懇求方式資源路徑HTTP版本號<CRLF> 舉例:GET/test.htmlHTTP/1.1 懇求方式:POST、HEAD、OPTIONS、DELETE、TRACE、PUT狀態(tài)行 格式:HTTP版本號狀態(tài)碼緣由表達(dá)<CRLF> 舉例:HTTP/1.1200OK動手體驗:使用telnet演示Head懇求方式使用GET和POST方式傳遞參數(shù)

在URL地址后面可以附加一些參數(shù) 舉例:GET方式 舉例:GET/servlet/ParamsServlet?param1=abc¶m2=xyzHTTP/1.1

特點:傳送的數(shù)據(jù)量是有限制的,一般限制在1KB以下。POST方式

舉例:

POST/servlet/ParamsServletHTTP/1.1 Host: Content-Type:application/x-www-form-urlencoded Content-Length:28 param1=abc¶m2=xyz

特點:傳送的數(shù)據(jù)量要比GET方式傳送的數(shù)據(jù)量大得多。

動手體驗:使用GET與POST方式傳遞參數(shù)響應(yīng)狀態(tài)碼

響應(yīng)狀態(tài)碼用于表示效勞器對懇求的各種不同處理結(jié)果和狀態(tài),它是一個三位的十進(jìn)制數(shù)。響應(yīng)狀態(tài)碼可歸為5種類別,使用最高位為1到5來進(jìn)展分類,如下所示:〔1〕100~199表示成功接收懇求,要求客戶端連續(xù)提交下一次懇求才能完成整個處理過程。〔2〕200~299表示成功接收懇求并已完成整個處理過程?!?〕300~399為完成懇求,客戶需進(jìn)一步細(xì)化懇求。例如,懇求的資源已經(jīng)移動一個新地址?!?〕400~499客戶端的懇求有錯誤?!?〕500~599效勞器端消失錯誤。

響應(yīng)狀態(tài)碼典型狀況200〔正?!潮硎疽磺姓#祷氐氖钦┣蠼Y(jié)果。206〔局部內(nèi)容〕客戶發(fā)送了一個帶有Range頭〔要求效勞器只返回文檔中的局部內(nèi)容〕的GET懇求,效勞器按要求完成了這個懇求。302/307〔臨時重定向〕指出被懇求的文檔已被臨時移動到別處,此文檔的新的URL在Location響應(yīng)頭中給出。304〔未修改〕表示客戶機(jī)緩存的版本是最新的,客戶機(jī)應(yīng)當(dāng)連續(xù)使用它。401〔未經(jīng)授權(quán)〕表示客戶機(jī)訪問的是一個受口令和密碼愛護(hù)的頁面,結(jié)合使用一個WWW-Authenticate響應(yīng)頭提示客戶機(jī)應(yīng)重新發(fā)出一個帶有Authorization頭的懇求消息。404〔找不到〕效勞器上不存在客戶機(jī)所懇求的資源。500〔內(nèi)部效勞器錯誤〕效勞器端的CGI、ASP、JSP等程序發(fā)生錯誤。通用信息頭

通用信息頭字段既能用于懇求消息,也能用于響應(yīng)消息,它包括一些與被傳輸?shù)膶嶓w內(nèi)容沒有關(guān)系的常用消息頭字段。Cache-Control:no-cache〔*〕Connection:close/Keep-Alive〔*〕Date:Tue,11Jul202318:23:51GMTPragma:no-cache〔*〕Trailer:DateTransfer-Encoding:chunked〔*〕Upgrade:HTTP/2.0,SHTTP/1.3Via:HTTP/1.1Proxy1,HTTP/1.1Proxy2Warning:anytext

動手體驗:體驗Connection頭字段的作用

懇求頭〔1〕懇求頭字段用于客戶端在懇求消息中向效勞器傳遞附加信息,主要包括客戶端可以承受的數(shù)據(jù)類型、壓縮方法、語言、以及發(fā)出懇求的超鏈接所屬網(wǎng)頁的URL地址等信息。Accept:text/html,image/*〔*〕Accept-Charset:ISO-8859-1,unicode-1-1〔*〕Accept-Encoding:gzip,compress〔*〕Accept-Language:en-gb,zh-cn〔*〕Authorization:Basicenh4OjEyMzQ1Ng==〔*〕Expect:100-continueFromHost::80〔*〕If-Match:“xyzzy“,“r2d2xxxx“

動手體驗:體驗Accept-Language頭字段的作用

懇求頭〔2〕If-Modified-Since:Tue,11Jul202318:23:51GMT〔*〕If-None-Match:“xyzzy“,“r2d2xxxx“If-Range:Tue,11Jul202318:23:51GMTIf-Unmodified-Since:Tue,11Jul202318:23:51GMTMax-Forwards:1Proxy-Authorization:Basicenh4OjEyMzQ1Ng==Range:bytes=100-599〔*〕 Range:bytes=100- Range:bytes=-100Referer〔*〕TE:trailers,deflateUser-Agent:Mozilla/4.0(compatible;MSIE5.5;WindowsNT5.0)〔*〕響應(yīng)頭

響應(yīng)頭字段用于效勞器在響應(yīng)消息中向客戶端傳遞附加信息,包括效勞程序名,被懇求資源需要的認(rèn)證方式,被懇求資源已移動到的新地址等信息。Accept-Range:bytes〔*〕Age:315315315Etag:b38b9-17dd-367c5dcdLocation〔*〕Proxy-Authenticate:BASICrealm=“it315“Retry-After:Tue,11Jul202318:23:51GMTServer:Microsoft-IIS/5.0〔*〕Vary:Accept-LanguageWWW-Authenticate:BASICrealm=“it315“〔*〕

動手體驗:體驗Location頭字段的作用

實體頭

實體頭用作實體內(nèi)容的元信息,描述了實體內(nèi)容的屬性,包括實體信息類型、長度、壓縮方法、最終一次修改時間、數(shù)據(jù)有效期等。Allow:GET,POSTContent-Encoding:gzip〔*〕Content-Language:zh-cn〔*〕Content-Length:80〔*〕Content-LocationContent-MD5:ABCDABCDABCDABCDABCDAB==Content-Range:bytes2543-4532/7898〔*〕Content-Type:text/html;charset=GB2312〔*〕Expires:Tue,11Jul202318:23:51GMT〔*〕Last-Modified:Tue,11Jul202318:23:51GMT〔*〕

動手體驗:Tomcat中的文件擴(kuò)展名與MIME的映射關(guān)系

擴(kuò)展頭

在HTTP消息中,也可以使用一些在HTTP1.1正式標(biāo)準(zhǔn)里沒有定義的頭字段,這些頭字段統(tǒng)稱為自定義的HTTP頭或擴(kuò)展頭,它們通常被當(dāng)作是一種實體頭處理?,F(xiàn)在流行的掃瞄器實際上都支持Cookie、Set-Cookie、Refresh和Content-Disposition等幾個常用的擴(kuò)展頭字段。Refresh頭字段Refresh:1Content-Disposition頭字段 Content-Type:application/octet-stream C

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論