1.背景介紹
2.知識剖析
3.常見問題
4.解決方案
5.編碼實(shí)戰(zhàn)
6.擴(kuò)展思考
7.參考文獻(xiàn)
8.更多討論
1.背景介紹
什么是http協(xié)議数焊?
http協(xié)議(HyperText Transfer Protocol温峭,超文本傳協(xié)議)是一種用于分布式,協(xié)作式和超媒體信息系統(tǒng)的應(yīng)用層協(xié)議,
是用于從萬維網(wǎng)(WWW:World Wide Web )服務(wù)器傳輸超文本到本地瀏覽器的傳送協(xié)議煎谍。
特點(diǎn):
1坊萝、簡單快速:客戶向服務(wù)器請求服務(wù)時(shí),只需傳送請求方法和路徑句狼。
請求方法常用的有GET笋熬、HEAD、POST等腻菇。每種方法規(guī)定了客戶與服務(wù)器聯(lián)系的類型不同胳螟。由于HTTP協(xié)議簡單昔馋,使得HTTP服務(wù)器的程序規(guī)模小,因而通信速度很快糖耸。
靈活:HTTP允許傳輸任意類型的數(shù)據(jù)對象秘遏。正在傳輸?shù)念愋陀蒀ontent-Type加以標(biāo)記。
3.無連接:無連接的含義是限制每次連接只處理一個請求嘉竟。服務(wù)器處理完客戶的請求邦危,并收到客戶的應(yīng)答后,即斷開連接舍扰。采用這種方式可以節(jié)省傳輸時(shí)間倦蚪。
4.無狀態(tài):HTTP協(xié)議是無狀態(tài)協(xié)議。無狀態(tài)是指協(xié)議對于事務(wù)處理沒有記憶能力边苹。缺少狀態(tài)意味著如果后續(xù)處理需要前面的信息陵且,則它必須重傳,這樣可能導(dǎo)致每次連接傳送的數(shù)據(jù)量增大个束。另一方面慕购,在服務(wù)器不需要先前信息時(shí)它的應(yīng)答就較快。
5茬底、支持B/S及C/S模式沪悲。
2.知識剖析
URL
HTTP使用統(tǒng)一資源標(biāo)識符(Uniform Resource Identifiers, URI)來傳輸數(shù)據(jù)和建立連接。URL是一種特殊類型的URI桩警,全稱是UniformResourceLocator,
中文叫統(tǒng)一資源定位符,是互聯(lián)網(wǎng)上用來標(biāo)識某一處資源的地址可训,包含了用于查找某個資源的足夠的信息。
以下面這個URL為例捶枢,介紹下普通URL的各部分組成:
http://www.aspxfans.com:8080/news/index.asp?boardID=5&ID=24618&page=1#name
1.協(xié)議部分:該URL的協(xié)議部分為“http:”握截,這代表網(wǎng)頁使用的是HTTP協(xié)議。在Internet中可以使用多種協(xié)議烂叔,如HTTP谨胞,F(xiàn)TP等等本例中使用的是HTTP協(xié)議。在"HTTP"后面的“//”為分隔符蒜鸡。
2.域名部分:該URL的域名部分為“www.aspxfans.com”胯努。一個URL中,也可以使用IP地址作為域名使用逢防。
3.端口部分:跟在域名后面的是端口叶沛,域名和端口之間使用“:”作為分隔符。端口不是一個URL必須的部分忘朝,如果省略端口部分灰署,將采用默認(rèn)端口。
4.虛擬目錄部分:從域名后的第一個“/”開始到最后一個“/”為止,是虛擬目錄部分溉箕。虛擬目錄也不是一個URL必須的部分晦墙。本例中的虛擬目錄是“/news/”
5.文件名部分:從域名后的最后一個“/”開始到“?”為止肴茄,是文件名部分晌畅,如果沒有“?”,則是從域名后的最后一個“/”開始到“#”為止,是文件部分寡痰,如果沒有“抗楔?”和“#”,那么從域名后的最后一個“/”開始到結(jié)束氓癌,都是文件名部分谓谦。
本例中的文件名是“index.asp”。文件名部分也不是一個URL必須的部分贪婉,如果省略該部分,則使用默認(rèn)的文件名
6.錨部分:從“#”開始到最后卢肃,都是錨部分疲迂。本例中的錨部分是“name”。錨部分也不是一個URL必須的部分莫湘。
7.參數(shù)部分:從“尤蒿?”開始到“#”為止之間的部分為參數(shù)部分,又稱搜索部分幅垮、查詢部分腰池。本例中的參數(shù)部分為“boardID=5&ID=24618&page=1”。參數(shù)可以允許有多個參數(shù)忙芒,參數(shù)與參數(shù)之間用“&”作為分隔符示弓。
3.常見問題
http請求content-Type有幾種?
Content-Type呵萨,內(nèi)容類型奏属,用于定義網(wǎng)絡(luò)文件的類型和網(wǎng)頁的編碼,瀏覽器根據(jù)該參數(shù)來決定數(shù)據(jù)的打開方式潮峦。
Content-Type使用的是 “主類型/子類型; 額外參數(shù)” (? [type]/[subtype]; parameter )的數(shù)值格式囱皿。
“主類型” (type)主要有以下幾種:
1. text:用于標(biāo)準(zhǔn)化地表示的文本信息,文本消息可以是多種字符集和或者多種格式的忱嘹; 默認(rèn)是text/plain嘱腥。
2. multipart:用于連接消息體的多個部分構(gòu)成一個消息,這些部分可以是不同類型的數(shù)據(jù)拘悦; 默認(rèn)是multipart/mixed齿兔。
3. application:用于傳輸應(yīng)用程序數(shù)據(jù)或者二進(jìn)制數(shù)據(jù); 默認(rèn)是application/octet-stream。
4. message:用于包裝一個E-mail消息愧驱。
5. image:用于傳輸靜態(tài)圖片數(shù)據(jù)慰技。
6. audio:用于傳輸音頻或者音聲數(shù)據(jù)。
7. video:用于傳輸動態(tài)影像數(shù)據(jù)组砚,可以是與音頻編輯在一起的視頻數(shù)據(jù)格式吻商。
“子類型” (subtype)用于指定"主類型"的詳細(xì)形式。 其中以x-開頭表示該類別尚未標(biāo)準(zhǔn)化 糟红。當(dāng)客戶端不能確定“子類型”時(shí)艾帐,會根據(jù)“主類型”來獲取默認(rèn)的子類型。
"額外參數(shù)" (parameter)用于指定請求/響應(yīng)內(nèi)容的字符編碼格式盆偿。例如text/html;charset=utf-8柒爸;
http狀態(tài)碼
1開頭代表消息,代表請求已被接收,需要繼續(xù)處理,這類響應(yīng)只是臨時(shí)響應(yīng)
2開頭代表成功,這一類型的狀態(tài)碼代表請求已成功被服務(wù)器接收,理解
3開頭代表重定向.這類狀態(tài)碼代表需要客戶端采取進(jìn)一步的操作才能完成請求,通常,這些狀態(tài)碼用來重定向,后續(xù)的地址(重定向目標(biāo))在本次響應(yīng)的location域中指明
4開頭代表請求錯誤,這類狀態(tài)碼代表客戶端看起來可能發(fā)生了錯誤,妨礙了服務(wù)器的處理
5開頭代表服務(wù)器在處理請求的過程有錯誤或者異常狀態(tài)發(fā)生
常見的狀態(tài)碼
200:請求已成功,請求所希望的響應(yīng)頭或數(shù)據(jù)體將隨此響應(yīng)返回事扭。
404:請求失敗捎稚,請求所希望得到的資源未被在服務(wù)器上發(fā)現(xiàn),出現(xiàn)這個錯誤的最有可能的原因是服務(wù)器端沒有這個頁面求橄。
500:服務(wù)器遇到了一個未曾預(yù)料的狀況今野,導(dǎo)致了它無法完成對請求的處理。一般來說罐农,這個問題都會在服務(wù)器端的源代碼出現(xiàn)錯誤時(shí)出現(xiàn)条霜。
Get和post請求方法有什么區(qū)別?
根據(jù)HTTP標(biāo)準(zhǔn)涵亏,HTTP請求可以使用多種請求方法宰睡,到HTTP1.1包括八種方法:
GET, POST,HEAD,OPTIONS, PUT, DELETE, TRACE 和 CONNECT。
4.解決方案
區(qū)別:
1.GET提交的數(shù)據(jù)會放在URL之后气筋,以?分割URL和傳輸數(shù)據(jù)廊营,參數(shù)之間以&相連旅赢,如EditPosts.aspx?name=test1&id=123456. POST方法是把提交的數(shù)據(jù)放在HTTP包的Body中.
2.GET提交的數(shù)據(jù)大小有限制(因?yàn)闉g覽器對URL的長度有限制),而POST方法提交的數(shù)據(jù)沒有限制。
3.GET方式需要使用Request.QueryString來取得變量的值索守,而POST方式通過Request.Form來獲取變量的值夕吻。
4.GET方式提交數(shù)據(jù)坤次,會帶來安全問題驳规,比如一個登錄頁面,通過GET方式提交數(shù)據(jù)時(shí)艾君,用戶名和密碼將出現(xiàn)在URL上采够,如果頁面可以被緩存或者其他人可以訪問這臺機(jī)器,就可以從歷史記錄獲得該用戶的賬號和密碼冰垄。
5.編碼實(shí)戰(zhàn)
6.擴(kuò)展思考
http協(xié)議適用場景
缺點(diǎn):
1.傳輸速度慢蹬癌,數(shù)據(jù)包大。
2.如實(shí)現(xiàn)實(shí)時(shí)交互,服務(wù)器性能壓力大
3.數(shù)據(jù)傳輸安全性差
1.公司oa系統(tǒng):Office Automation System 逝薪,意為辦公自動化系統(tǒng)隅要。使用局域網(wǎng),較為安全董济。
2.各種互聯(lián)網(wǎng)服務(wù)步清。
7.參考文獻(xiàn)
https://www.cnblogs.com/li0803/archive/2008/11/03/1324746.html
http://blog.csdn.net/kfanning/article/details/6062118/
更多討論:
長連接和短連接?
HTTP1.1規(guī)定了默認(rèn)保持長連接(HTTP persistent connection 虏肾,也有翻譯為持久連接)廓啊,數(shù)據(jù)傳輸完成了保持TCP連接不斷開(不發(fā)RST包、不四次握手)封豪,等待在同域名下繼續(xù)用這個通道傳輸數(shù)據(jù)谴轮;相反的就是短連接。
http協(xié)議和tcp協(xié)議的區(qū)別是什么吹埠?
術(shù)語TCP/IP代表傳輸控制協(xié)議/網(wǎng)際協(xié)議第步,指的是一系列協(xié)議≡道牛“IP”代表網(wǎng)際協(xié)議雌续,TCP和UDP使用該協(xié)議從一個網(wǎng)絡(luò)傳送數(shù)據(jù)包到另一個網(wǎng)絡(luò)。把IP想像成一種高速公路胯杭,它允許其它協(xié)議在上面行駛并找到到其它電腦的出口。TCP和UDP是高速公路上的“卡車”受啥,它們攜帶的貨物就是像HTTP做个,文件傳輸協(xié)議FTP這樣的協(xié)議等。
Http協(xié)議中Http1.0與1.1區(qū)別滚局?
http://blog.csdn.net/elifefly/article/details/3964766/
PPT地址:
https://ptteng.github.io/PPT/PPT-java/JAVA-task2-http.xml.html#/