1蝇庭、HTTP協(xié)議

(原話)談?wù)剬?duì)HTTP協(xié)議的理解:
超文本傳輸協(xié)議,應(yīng)用于OSI網(wǎng)絡(luò)模型中的應(yīng)用層捡硅,是用于服務(wù)器傳輸超文本到本地瀏覽器的傳送協(xié)議哮内。它有兩個(gè)比較需要注意的特點(diǎn)就是:無連接,當(dāng)服務(wù)器處理完客戶的請求壮韭,并受到客戶的應(yīng)答后北发,就斷開連接;還有就是無狀態(tài)喷屋,是指協(xié)議對(duì)事物處理沒有記憶能力琳拨,如果后續(xù)處理需要前面的信息,那么就需要重傳屯曹。
請求消息:request狱庇,由請求行,請求頭部恶耽,空行密任,請求數(shù)據(jù)組成。其中請求頭部包含說明服務(wù)器使用的附加信息偷俭,比如HOST(請求服務(wù)器的域名和端口號(hào))浪讳,還有客戶端能接受的內(nèi)容類型,語言社搅,內(nèi)容壓縮編碼類型驻债,字符集編碼等。
響應(yīng)消息:response形葬,由狀態(tài)嗎合呐,消息報(bào)頭,空行笙以,響應(yīng)正文淌实,消息報(bào)頭則和請求消息中的請求頭部相對(duì)應(yīng)。

get和post的區(qū)別:get刷新和回退是無害的,Post數(shù)據(jù)會(huì)被重新提交拆祈,因?yàn)間et能夠被緩存恨闪,而Post是不能被緩存的,然后get可以被存為書簽放坏,請求參數(shù)會(huì)顯示在URL中咙咽,并且會(huì)保留在瀏覽器歷史中,get對(duì)數(shù)據(jù)長度是有限制的淤年,Post是無限制的钧敞;最后get對(duì)數(shù)據(jù)類型的限制,只允許ASC||字符麸粮,Post還可以使用二進(jìn)制溉苛。

以下部分為轉(zhuǎn)載內(nèi)容:

一、HTTP簡介

·●http協(xié)議是Hyper Text Transfer Protocol(超文本傳輸協(xié)議)的縮寫弄诲,是用于從萬維網(wǎng)(world wide web)服務(wù)器傳輸超文本到本地瀏覽器的傳送協(xié)議愚战。
·●http是基于TCP/IP通信協(xié)議來傳送數(shù)據(jù)(HTML文件、圖片文件齐遵、查詢結(jié)果等)
·●http是一個(gè)屬于應(yīng)用層的面向?qū)ο蟮膮f(xié)議寂玲,由于其簡捷、快速的方式梗摇,適用于分布式超媒體信息系統(tǒng)敢茁。
·●HTTP協(xié)議工作于客戶端-服務(wù)端架構(gòu)為上。瀏覽器作為HTTP客戶端通過URL向HTTP服務(wù)端即WEB服務(wù)器發(fā)送所有請求留美。Web服務(wù)器根據(jù)接收到的請求后彰檬,向客戶端發(fā)送響應(yīng)信息。

image.png

主要特點(diǎn)
1谎砾、簡單快速:客戶向服務(wù)器請求服務(wù)時(shí)逢倍,只需傳送請求方法和路徑。請求方法常用的有g(shù)et景图、head较雕、post.每種方法規(guī)定了客戶與服務(wù)器聯(lián)系的類型不同。由于http協(xié)議簡單挚币,使得http服務(wù)器的程序規(guī)模小亮蒋,因而通信速度很快。
2妆毕、靈活:http允許傳輸任意類型的數(shù)據(jù)對(duì)象慎玖。正在傳輸?shù)念愋陀蒫ontent-type加以標(biāo)記。
3笛粘、無連接:無連接的含義是限制每次連接只處理一個(gè)請求趁怔。服務(wù)器處理完客戶的請求湿硝,并受到客戶的應(yīng)答后,即斷開連接润努。采用這種方式可以節(jié)省傳輸時(shí)間关斜。
4、無狀態(tài):http協(xié)議是無狀態(tài)協(xié)議铺浇。無狀態(tài)是指協(xié)議對(duì)于事務(wù)處理沒有記憶能力痢畜。缺少狀態(tài)意味著如果后續(xù)處理需要前面的額信息,則它必須重傳鳍侣,這樣可能導(dǎo)致每次連接傳送的數(shù)據(jù)量增大裁着。另一方面,在服務(wù)器不需要先前信息時(shí)它的應(yīng)答就較快拱她。
5、支持B/S及C/S模式

二扔罪、HTTP之URL:

http使用統(tǒng)一資源標(biāo)識(shí)符(Uniform resource Identitifers,URL)來傳輸數(shù)據(jù)和建立連接秉沼。Url是一種特殊類型的URI,包含了用于查找某個(gè)資源的足夠信息矿酵。

URL,全稱是UniformResourceLocator, 中文叫統(tǒng)一資源定位符,是互聯(lián)網(wǎng)上用來標(biāo)識(shí)某一處資源的地址唬复。以下面這個(gè)URL為例,介紹下普通URL的各部分組成:

http://www.aspxfans.com:8080/news/index.asp?boardID=5&ID=24618&page=1#name

從上面的
URL可以看出全肮,一個(gè)完整的URL包括以下幾部分:

1.協(xié)議部分:該URL的協(xié)議部分為“http:”敞咧,這代表網(wǎng)頁使用的是http協(xié)議。在Internet中可以使用多種協(xié)議辜腺,如http休建,F(xiàn)TP等等。在“http:”后面跟著的是分隔符“//”

2.域名部分:該URL的域名部分為www.aspxfans.com评疗,一個(gè)URL中测砂,也可以使用IP地址作為域名使用。

3.端口部分:根在域名后面的是端口百匆,域名和端口之間使用“:”作為分隔符砌些。端口不是一個(gè)URL必須的部分,如果省略端口部分加匈,將采用默認(rèn)端口存璃。

4.虛擬目錄部分:從域名后的第一個(gè)“/”開始到最后一個(gè)“/”為止,是虛擬目錄部分雕拼。虛擬目錄也不是一個(gè)URL必須的部分纵东。本例中的虛擬目錄是“/news/”

5.文件名部分:從域名后的最后一個(gè)“/”開始到“?”為止啥寇,是文件名部分篮迎,如果沒有“男图?”則是從域名的最后一個(gè)“/”開始到“#”為止,是文件部分甜橱,如果沒有“逊笆?”和“#”,那么從域名后的最后一個(gè)“/”開始到結(jié)束岂傲,都是文件名部分难裆。本例中的文件名是“index.asp”。文件名部分也不是一個(gè)URL必須的部分镊掖,如果省略該部分乃戈,則使用默認(rèn)的文件名

6.錨部分:從“#”開始到最后,都是錨部分亩进。本例中的錨部分是“name”症虑。錨部分也不是一個(gè)URL必須的部分

7.參數(shù)部分:從“?”開始到“#”為止之間的部分為參數(shù)部分归薛,又稱搜索部分谍憔、查詢部分。本例中的參數(shù)部分為“boardID=5&ID=24618&page=1”主籍。參數(shù)可以允許有多個(gè)參數(shù)习贫,參數(shù)與參數(shù)之間用“&”作為分隔符。

三千元、URI和URL的區(qū)別:

URI苫昌,是Uniform resource identifier,統(tǒng)一資源標(biāo)識(shí)符,用來唯一地標(biāo)志一個(gè)資源幸海。
Web上可用的每種資源如HTML文檔祟身,圖像、視頻片段物独、程序等都是用一個(gè)URI來定位的
URI一般由但部分組成:
A.訪問資源的命名機(jī)制
B.存放資源的主機(jī)名
C.資源自身的名稱月而,由路徑表示,著重強(qiáng)調(diào)于資源议纯。

URL是uniform resource locator 父款,統(tǒng)一資源定位器,它是一種具體的URI瞻凤,即URL可以用來標(biāo)志一個(gè)資源憨攒,而且還指明了如何locate定位這個(gè)資源
URL是Internet上用來描述信息資源的字符串,主要用在各種WWW客戶程序和服務(wù)器程序上阀参,特別是著名的MOSAIC
采用URL可以用一種統(tǒng)一的格式來描述各種信息資源肝集,包括文件、服務(wù)器的地址和目錄等蛛壳。URL一般由三部分組成:
A.協(xié)議(或者稱為服務(wù)方式)
B.存有該資源的主機(jī)IP地址(有時(shí)也包括端口)
C.主機(jī)資源的具體地址杏瞻。如目錄和文件名等所刀。

URN,uniform resource name捞挥,統(tǒng)一資源命名浮创,是通過名字來標(biāo)識(shí)資源,比如mailto:java-net@java.sun.com砌函。
URI是以一種抽象的斩披,高層次概念定義統(tǒng)一資源標(biāo)識(shí),而URL和URN則是具體的資源標(biāo)識(shí)的方式讹俊。URL和URN都是一種URI垦沉。籠統(tǒng)地說仍劈,每個(gè) URL 都是 URI厕倍,但不一定每個(gè) URI 都是 URL。這是因?yàn)?URI 還包括一個(gè)子類贩疙,即統(tǒng)一資源名稱 (URN)讹弯,它命名資源但不指定如何定位資源。上面的 mailto屋群、news 和 isbn URI 都是 URN 的示例。
在Java的URI中坏挠,一個(gè)URI實(shí)例可以代表絕對(duì)的芍躏,也可以是相對(duì)的,只要它符合URI的語法規(guī)則降狠。而URL類則不僅符合語義对竣,還包含了定位該資源的信息,因此它不能是相對(duì)的榜配。
在Java類庫中否纬,URI類不包含任何訪問資源的方法,它唯一的作用就是解析蛋褥。
相反的是临燃,URL類可以打開一個(gè)到達(dá)資源的流

四、HTTP之請求消息request

客戶端發(fā)送一個(gè)http請求到服務(wù)器的請求消息包括以下格式:
請求行(request line)烙心、請求頭部(header)膜廊、空行和請求數(shù)據(jù)四個(gè)部分組成


·請求行以一個(gè)方法符號(hào)開頭,以空格分開淫茵,后面跟著請求的URI和協(xié)議的版本爪瓜。
Get請求例子,使用charles 抓取的request:

GET /562f25980001b1b106000338.jpg HTTP/1.1 
Host img.mukewang.com 
User-Agent Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36 
Accept image/webp,image/*,*/*;q=0.8 
Referer http://www.imooc.com/ 
Accept-Encoding gzip, deflate, sdch 
Accept-Language zh-CN,zh;q=0.

第一部分:請求行匙瘪,用來說明請求類型铆铆,要訪問的資源以及所使用的http版本蝶缀。
get說明請求類型為GET,[/562f25980001b1b106000338.jpg]為要訪問的資源薄货,該行的 最后一部分說明使用的是HTTP1.1版本翁都。
第二部分:請求頭部,緊接著請求行之后的部分菲驴,用來說明服務(wù)器要使用的附加信息
從第二行起為請求頭部荐吵,HOST將指出請求的目的地,User-Agent服務(wù)器端和客戶端腳 本都能訪問它赊瞬,它是瀏覽器類型檢測邏輯的重要基礎(chǔ)先煎,該信息由你的瀏覽器來定義,并 且在每個(gè)請求中自動(dòng)發(fā)送等等
第三部分:空行巧涧,請求頭部后面空行是必須的
即使第四部分的請求數(shù)據(jù)為空薯蝎,也必須有空行。
第四部分:請求數(shù)據(jù)也叫主體谤绳,可以添加任意的其他數(shù)據(jù)占锯。
這個(gè)例子的請求數(shù)據(jù)為空。

Post請求例子缩筛,request:

POST / HTTP1.1 Host:www.wrox.com 
User-Agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
 Content-Type:application/x-www-form-urlencoded 
Content-Length:40 
Connection: Keep-Alive 
name=Professional%20Ajax&publisher=Wiley

五消略、HTTP之響應(yīng)信息reponse

一般情況下,服務(wù)器接收并處理客戶端發(fā)過來的請求后會(huì)返回一個(gè)HTTP的響應(yīng)信息瞎抛。
HTTP響應(yīng)也由四個(gè)部分組成艺演,分別為:狀態(tài)行、消息報(bào)頭桐臊、空行胎撤、響應(yīng)正文
(原話)談?wù)剬?duì)HTTP協(xié)議的理解:
超文本傳輸協(xié)議,應(yīng)用于OSI網(wǎng)絡(luò)模型中的應(yīng)用層断凶,是用于服務(wù)器傳輸超文本到本地瀏覽器的傳送協(xié)議伤提。它有兩個(gè)比較需要注意的特點(diǎn)就是:無連接,當(dāng)服務(wù)器處理完客戶的請求认烁,并受到客戶的應(yīng)答后肿男,就斷開連接;還有就是無狀態(tài)却嗡,是指協(xié)議對(duì)事物處理沒有記憶能力次伶,如果后續(xù)處理需要前面的信息,那么就需要重傳稽穆。
請求消息:request冠王,由請求行,請求頭部舌镶,空行柱彻,請求數(shù)據(jù)組成豪娜。其中請求頭部包含說明服務(wù)器使用的附加信息,比如HOST(請求服務(wù)器的域名和端口號(hào))哟楷,還有客戶端能接受的內(nèi)容類型瘤载,語言,內(nèi)容壓縮編碼類型卖擅,字符集編碼等鸣奔。
響應(yīng)消息:response,由狀態(tài)嗎惩阶,消息報(bào)頭挎狸,空行,響應(yīng)正文断楷,消息報(bào)頭則和請求消息中的請求頭部相對(duì)應(yīng)锨匆。

get和post的區(qū)別:get刷新和回退是無害的,Post數(shù)據(jù)會(huì)被重新提交冬筒,因?yàn)間et能夠被緩存恐锣,而Post是不能被緩存的,然后get可以被存為書簽舞痰,請求參數(shù)會(huì)顯示在URL中土榴,并且會(huì)保留在瀏覽器歷史中,get對(duì)數(shù)據(jù)長度是有限制的响牛,Post是無限制的玷禽;最后get對(duì)數(shù)據(jù)類型的限制,只允許ASC||字符娃善,Post還可以使用二進(jìn)制论衍。

以下部分為轉(zhuǎn)載內(nèi)容:

一瑞佩、HTTP簡介

·●http協(xié)議是Hyper Text Transfer Protocol(超文本傳輸協(xié)議)的縮寫聚磺,是用于從萬維網(wǎng)(world wide web)服務(wù)器傳輸超文本到本地瀏覽器的傳送協(xié)議。
·●http是基于TCP/IP通信協(xié)議來傳送數(shù)據(jù)(HTML文件炬丸、圖片文件瘫寝、查詢結(jié)果等)
·●http是一個(gè)屬于應(yīng)用層的面向?qū)ο蟮膮f(xié)議,由于其簡捷稠炬、快速的方式焕阿,適用于分布式超媒體信息系統(tǒng)。
·●HTTP協(xié)議工作于客戶端-服務(wù)端架構(gòu)為上首启。瀏覽器作為HTTP客戶端通過URL向HTTP服務(wù)端即WEB服務(wù)器發(fā)送所有請求暮屡。Web服務(wù)器根據(jù)接收到的請求后,向客戶端發(fā)送響應(yīng)信息毅桃。

image.png

主要特點(diǎn)
1褒纲、簡單快速:客戶向服務(wù)器請求服務(wù)時(shí)准夷,只需傳送請求方法和路徑。請求方法常用的有g(shù)et莺掠、head衫嵌、post.每種方法規(guī)定了客戶與服務(wù)器聯(lián)系的類型不同。由于http協(xié)議簡單彻秆,使得http服務(wù)器的程序規(guī)模小楔绞,因而通信速度很快。
2唇兑、靈活:http允許傳輸任意類型的數(shù)據(jù)對(duì)象酒朵。正在傳輸?shù)念愋陀蒫ontent-type加以標(biāo)記。
3幔亥、無連接:無連接的含義是限制每次連接只處理一個(gè)請求耻讽。服務(wù)器處理完客戶的請求,并受到客戶的應(yīng)答后帕棉,即斷開連接针肥。采用這種方式可以節(jié)省傳輸時(shí)間。
4香伴、無狀態(tài):http協(xié)議是無狀態(tài)協(xié)議慰枕。無狀態(tài)是指協(xié)議對(duì)于事務(wù)處理沒有記憶能力。缺少狀態(tài)意味著如果后續(xù)處理需要前面的額信息即纲,則它必須重傳具帮,這樣可能導(dǎo)致每次連接傳送的數(shù)據(jù)量增大。另一方面低斋,在服務(wù)器不需要先前信息時(shí)它的應(yīng)答就較快蜂厅。
5、支持B/S及C/S模式

二膊畴、HTTP之URL:

http使用統(tǒng)一資源標(biāo)識(shí)符(Uniform resource Identitifers,URL)來傳輸數(shù)據(jù)和建立連接掘猿。Url是一種特殊類型的URI,包含了用于查找某個(gè)資源的足夠信息唇跨。

URL,全稱是UniformResourceLocator, 中文叫統(tǒng)一資源定位符,是互聯(lián)網(wǎng)上用來標(biāo)識(shí)某一處資源的地址稠通。以下面這個(gè)URL為例,介紹下普通URL的各部分組成:

http://www.aspxfans.com:8080/news/index.asp?boardID=5&ID=24618&page=1#name

從上面的
URL可以看出买猖,一個(gè)完整的URL包括以下幾部分:

1.協(xié)議部分:該URL的協(xié)議部分為“http:”改橘,這代表網(wǎng)頁使用的是http協(xié)議。在Internet中可以使用多種協(xié)議玉控,如http飞主,F(xiàn)TP等等。在“http:”后面跟著的是分隔符“//”

2.域名部分:該URL的域名部分為www.aspxfans.com,一個(gè)URL中碌识,也可以使用IP地址作為域名使用讽挟。

3.端口部分:根在域名后面的是端口,域名和端口之間使用“:”作為分隔符丸冕。端口不是一個(gè)URL必須的部分耽梅,如果省略端口部分,將采用默認(rèn)端口胖烛。

4.虛擬目錄部分:從域名后的第一個(gè)“/”開始到最后一個(gè)“/”為止眼姐,是虛擬目錄部分。虛擬目錄也不是一個(gè)URL必須的部分佩番。本例中的虛擬目錄是“/news/”

5.文件名部分:從域名后的最后一個(gè)“/”開始到“众旗?”為止,是文件名部分趟畏,如果沒有“贡歧?”則是從域名的最后一個(gè)“/”開始到“#”為止,是文件部分赋秀,如果沒有“利朵?”和“#”,那么從域名后的最后一個(gè)“/”開始到結(jié)束猎莲,都是文件名部分绍弟。本例中的文件名是“index.asp”。文件名部分也不是一個(gè)URL必須的部分著洼,如果省略該部分樟遣,則使用默認(rèn)的文件名

6.錨部分:從“#”開始到最后,都是錨部分身笤。本例中的錨部分是“name”豹悬。錨部分也不是一個(gè)URL必須的部分

7.參數(shù)部分:從“?”開始到“#”為止之間的部分為參數(shù)部分液荸,又稱搜索部分瞻佛、查詢部分。本例中的參數(shù)部分為“boardID=5&ID=24618&page=1”莹弊。參數(shù)可以允許有多個(gè)參數(shù)涤久,參數(shù)與參數(shù)之間用“&”作為分隔符涡尘。

三忍弛、URI和URL的區(qū)別:

URI,是Uniform resource identifier,統(tǒng)一資源標(biāo)識(shí)符考抄,用來唯一地標(biāo)志一個(gè)資源细疚。
Web上可用的每種資源如HTML文檔,圖像川梅、視頻片段疯兼、程序等都是用一個(gè)URI來定位的
URI一般由但部分組成:
A.訪問資源的命名機(jī)制
B.存放資源的主機(jī)名
C.資源自身的名稱然遏,由路徑表示,著重強(qiáng)調(diào)于資源吧彪。

URL是uniform resource locator 待侵,統(tǒng)一資源定位器,它是一種具體的URI姨裸,即URL可以用來標(biāo)志一個(gè)資源秧倾,而且還指明了如何locate定位這個(gè)資源
URL是Internet上用來描述信息資源的字符串,主要用在各種WWW客戶程序和服務(wù)器程序上傀缩,特別是著名的MOSAIC
采用URL可以用一種統(tǒng)一的格式來描述各種信息資源那先,包括文件、服務(wù)器的地址和目錄等赡艰。URL一般由三部分組成:
A.協(xié)議(或者稱為服務(wù)方式)
B.存有該資源的主機(jī)IP地址(有時(shí)也包括端口)
C.主機(jī)資源的具體地址售淡。如目錄和文件名等。

URN慷垮,uniform resource name揖闸,統(tǒng)一資源命名,是通過名字來標(biāo)識(shí)資源料身,比如mailto:java-net@java.sun.com楔壤。
URI是以一種抽象的,高層次概念定義統(tǒng)一資源標(biāo)識(shí)惯驼,而URL和URN則是具體的資源標(biāo)識(shí)的方式蹲嚣。URL和URN都是一種URI∷钌籠統(tǒng)地說隙畜,每個(gè) URL 都是 URI,但不一定每個(gè) URI 都是 URL说贝。這是因?yàn)?URI 還包括一個(gè)子類议惰,即統(tǒng)一資源名稱 (URN),它命名資源但不指定如何定位資源乡恕。上面的 mailto言询、news 和 isbn URI 都是 URN 的示例。
在Java的URI中傲宜,一個(gè)URI實(shí)例可以代表絕對(duì)的运杭,也可以是相對(duì)的,只要它符合URI的語法規(guī)則函卒。而URL類則不僅符合語義辆憔,還包含了定位該資源的信息,因此它不能是相對(duì)的。
在Java類庫中虱咧,URI類不包含任何訪問資源的方法熊榛,它唯一的作用就是解析。
相反的是腕巡,URL類可以打開一個(gè)到達(dá)資源的流

四玄坦、HTTP之請求消息request

客戶端發(fā)送一個(gè)http請求到服務(wù)器的請求消息包括以下格式:
請求行(request line)、請求頭部(header)绘沉、空行和請求數(shù)據(jù)四個(gè)部分組成


·請求行以一個(gè)方法符號(hào)開頭营搅,以空格分開,后面跟著請求的URI和協(xié)議的版本梆砸。
Get請求例子转质,使用charles 抓取的request:

GET /562f25980001b1b106000338.jpg HTTP/1.1 
Host img.mukewang.com 
User-Agent Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36 
Accept image/webp,image/*,*/*;q=0.8 
Referer http://www.imooc.com/ 
Accept-Encoding gzip, deflate, sdch 
Accept-Language zh-CN,zh;q=0.

第一部分:請求行,用來說明請求類型帖世,要訪問的資源以及所使用的http版本休蟹。
get說明請求類型為GET,[/562f25980001b1b106000338.jpg]為要訪問的資源日矫,該行的 最后一部分說明使用的是HTTP1.1版本赂弓。
第二部分:請求頭部,緊接著請求行之后的部分哪轿,用來說明服務(wù)器要使用的附加信息
從第二行起為請求頭部盈魁,HOST將指出請求的目的地,User-Agent服務(wù)器端和客戶端腳 本都能訪問它窃诉,它是瀏覽器類型檢測邏輯的重要基礎(chǔ)杨耙,該信息由你的瀏覽器來定義,并 且在每個(gè)請求中自動(dòng)發(fā)送等等
第三部分:空行飘痛,請求頭部后面空行是必須的
即使第四部分的請求數(shù)據(jù)為空珊膜,也必須有空行。
第四部分:請求數(shù)據(jù)也叫主體宣脉,可以添加任意的其他數(shù)據(jù)车柠。
這個(gè)例子的請求數(shù)據(jù)為空。

Post請求例子塑猖,request:

POST / HTTP1.1 Host:www.wrox.com 
User-Agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
 Content-Type:application/x-www-form-urlencoded 
Content-Length:40 
Connection: Keep-Alive 
name=Professional%20Ajax&publisher=Wiley

五竹祷、HTTP之響應(yīng)信息reponse

一般情況下,服務(wù)器接收并處理客戶端發(fā)過來的請求后會(huì)返回一個(gè)HTTP的響應(yīng)信息羊苟。
HTTP響應(yīng)也由四個(gè)部分組成塑陵,分別為:狀態(tài)行、消息報(bào)頭践险、空行猿妈、響應(yīng)正文

image.png

![(原話)談?wù)剬?duì)HTTP協(xié)議的理解:
超文本傳輸協(xié)議,應(yīng)用于OSI網(wǎng)絡(luò)模型中的應(yīng)用層巍虫,是用于服務(wù)器傳輸超文本到本地瀏覽器的傳送協(xié)議彭则。它有兩個(gè)比較需要注意的特點(diǎn)就是:無連接,當(dāng)服務(wù)器處理完客戶的請求占遥,并受到客戶的應(yīng)答后俯抖,就斷開連接;還有就是無狀態(tài)瓦胎,是指協(xié)議對(duì)事物處理沒有記憶能力芬萍,如果后續(xù)處理需要前面的信息,那么就需要重傳搔啊。
請求消息:request柬祠,由請求行,請求頭部负芋,空行漫蛔,請求數(shù)據(jù)組成。其中請求頭部包含說明服務(wù)器使用的附加信息旧蛾,比如HOST(請求服務(wù)器的域名和端口號(hào))莽龟,還有客戶端能接受的內(nèi)容類型,語言锨天,內(nèi)容壓縮編碼類型毯盈,字符集編碼等。
響應(yīng)消息:response病袄,由狀態(tài)嗎搂赋,消息報(bào)頭,空行益缠,響應(yīng)正文厂镇,消息報(bào)頭則和請求消息中的請求頭部相對(duì)應(yīng)。

get和post的區(qū)別:get刷新和回退是無害的左刽,Post數(shù)據(jù)會(huì)被重新提交捺信,因?yàn)間et能夠被緩存,而Post是不能被緩存的欠痴,然后get可以被存為書簽迄靠,請求參數(shù)會(huì)顯示在URL中,并且會(huì)保留在瀏覽器歷史中喇辽,get對(duì)數(shù)據(jù)長度是有限制的掌挚,Post是無限制的;最后get對(duì)數(shù)據(jù)類型的限制菩咨,只允許ASC||字符吠式,Post還可以使用二進(jìn)制陡厘。

以下部分為轉(zhuǎn)載內(nèi)容:

一、HTTP簡介

·●http協(xié)議是Hyper Text Transfer Protocol(超文本傳輸協(xié)議)的縮寫特占,是用于從萬維網(wǎng)(world wide web)服務(wù)器傳輸超文本到本地瀏覽器的傳送協(xié)議糙置。
·●http是基于TCP/IP通信協(xié)議來傳送數(shù)據(jù)(HTML文件、圖片文件是目、查詢結(jié)果等)
·●http是一個(gè)屬于應(yīng)用層的面向?qū)ο蟮膮f(xié)議谤饭,由于其簡捷、快速的方式懊纳,適用于分布式超媒體信息系統(tǒng)揉抵。
·●HTTP協(xié)議工作于客戶端-服務(wù)端架構(gòu)為上。瀏覽器作為HTTP客戶端通過URL向HTTP服務(wù)端即WEB服務(wù)器發(fā)送所有請求嗤疯。Web服務(wù)器根據(jù)接收到的請求后冤今,向客戶端發(fā)送響應(yīng)信息。

image.png

主要特點(diǎn)
1茂缚、簡單快速:客戶向服務(wù)器請求服務(wù)時(shí)辟汰,只需傳送請求方法和路徑。請求方法常用的有g(shù)et阱佛、head帖汞、post.每種方法規(guī)定了客戶與服務(wù)器聯(lián)系的類型不同。由于http協(xié)議簡單凑术,使得http服務(wù)器的程序規(guī)模小翩蘸,因而通信速度很快。
2淮逊、靈活:http允許傳輸任意類型的數(shù)據(jù)對(duì)象催首。正在傳輸?shù)念愋陀蒫ontent-type加以標(biāo)記。
3泄鹏、無連接:無連接的含義是限制每次連接只處理一個(gè)請求郎任。服務(wù)器處理完客戶的請求,并受到客戶的應(yīng)答后备籽,即斷開連接舶治。采用這種方式可以節(jié)省傳輸時(shí)間。
4车猬、無狀態(tài):http協(xié)議是無狀態(tài)協(xié)議霉猛。無狀態(tài)是指協(xié)議對(duì)于事務(wù)處理沒有記憶能力。缺少狀態(tài)意味著如果后續(xù)處理需要前面的額信息珠闰,則它必須重傳惜浅,這樣可能導(dǎo)致每次連接傳送的數(shù)據(jù)量增大。另一方面伏嗜,在服務(wù)器不需要先前信息時(shí)它的應(yīng)答就較快坛悉。
5伐厌、支持B/S及C/S模式

二廓八、HTTP之URL:

http使用統(tǒng)一資源標(biāo)識(shí)符(Uniform resource Identitifers,URL)來傳輸數(shù)據(jù)和建立連接迁匠。Url是一種特殊類型的URI垫挨,包含了用于查找某個(gè)資源的足夠信息社牲。

URL,全稱是UniformResourceLocator, 中文叫統(tǒng)一資源定位符,是互聯(lián)網(wǎng)上用來標(biāo)識(shí)某一處資源的地址。以下面這個(gè)URL為例狡耻,介紹下普通URL的各部分組成:

http://www.aspxfans.com:8080/news/index.asp?boardID=5&ID=24618&page=1#name

從上面的
URL可以看出,一個(gè)完整的URL包括以下幾部分:

1.協(xié)議部分:該URL的協(xié)議部分為“http:”,這代表網(wǎng)頁使用的是http協(xié)議界轩。在Internet中可以使用多種協(xié)議,如http衔瓮,F(xiàn)TP等等浊猾。在“http:”后面跟著的是分隔符“//”

2.域名部分:該URL的域名部分為www.aspxfans.com,一個(gè)URL中热鞍,也可以使用IP地址作為域名使用葫慎。

3.端口部分:根在域名后面的是端口,域名和端口之間使用“:”作為分隔符薇宠。端口不是一個(gè)URL必須的部分偷办,如果省略端口部分,將采用默認(rèn)端口澄港。

4.虛擬目錄部分:從域名后的第一個(gè)“/”開始到最后一個(gè)“/”為止椒涯,是虛擬目錄部分。虛擬目錄也不是一個(gè)URL必須的部分回梧。本例中的虛擬目錄是“/news/”

5.文件名部分:從域名后的最后一個(gè)“/”開始到“废岂?”為止,是文件名部分狱意,如果沒有“湖苞?”則是從域名的最后一個(gè)“/”開始到“#”為止,是文件部分详囤,如果沒有“财骨?”和“#”,那么從域名后的最后一個(gè)“/”開始到結(jié)束藏姐,都是文件名部分蚓再。本例中的文件名是“index.asp”。文件名部分也不是一個(gè)URL必須的部分包各,如果省略該部分摘仅,則使用默認(rèn)的文件名

6.錨部分:從“#”開始到最后,都是錨部分问畅。本例中的錨部分是“name”娃属。錨部分也不是一個(gè)URL必須的部分

7.參數(shù)部分:從“六荒?”開始到“#”為止之間的部分為參數(shù)部分,又稱搜索部分矾端、查詢部分掏击。本例中的參數(shù)部分為“boardID=5&ID=24618&page=1”。參數(shù)可以允許有多個(gè)參數(shù)秩铆,參數(shù)與參數(shù)之間用“&”作為分隔符砚亭。

三、URI和URL的區(qū)別:

URI殴玛,是Uniform resource identifier,統(tǒng)一資源標(biāo)識(shí)符捅膘,用來唯一地標(biāo)志一個(gè)資源。
Web上可用的每種資源如HTML文檔滚粟,圖像寻仗、視頻片段、程序等都是用一個(gè)URI來定位的
URI一般由但部分組成:
A.訪問資源的命名機(jī)制
B.存放資源的主機(jī)名
C.資源自身的名稱凡壤,由路徑表示署尤,著重強(qiáng)調(diào)于資源。

URL是uniform resource locator 亚侠,統(tǒng)一資源定位器曹体,它是一種具體的URI,即URL可以用來標(biāo)志一個(gè)資源硝烂,而且還指明了如何locate定位這個(gè)資源
URL是Internet上用來描述信息資源的字符串箕别,主要用在各種WWW客戶程序和服務(wù)器程序上,特別是著名的MOSAIC
采用URL可以用一種統(tǒng)一的格式來描述各種信息資源钢坦,包括文件究孕、服務(wù)器的地址和目錄等。URL一般由三部分組成:
A.協(xié)議(或者稱為服務(wù)方式)
B.存有該資源的主機(jī)IP地址(有時(shí)也包括端口)
C.主機(jī)資源的具體地址爹凹。如目錄和文件名等厨诸。

URN,uniform resource name禾酱,統(tǒng)一資源命名微酬,是通過名字來標(biāo)識(shí)資源,比如mailto:java-net@java.sun.com颤陶。
URI是以一種抽象的颗管,高層次概念定義統(tǒng)一資源標(biāo)識(shí),而URL和URN則是具體的資源標(biāo)識(shí)的方式滓走。URL和URN都是一種URI垦江。籠統(tǒng)地說搅方,每個(gè) URL 都是 URI比吭,但不一定每個(gè) URI 都是 URL绽族。這是因?yàn)?URI 還包括一個(gè)子類,即統(tǒng)一資源名稱 (URN)衩藤,它命名資源但不指定如何定位資源吧慢。上面的 mailto、news 和 isbn URI 都是 URN 的示例赏表。
在Java的URI中检诗,一個(gè)URI實(shí)例可以代表絕對(duì)的,也可以是相對(duì)的瓢剿,只要它符合URI的語法規(guī)則逢慌。而URL類則不僅符合語義,還包含了定位該資源的信息跋选,因此它不能是相對(duì)的涕癣。
在Java類庫中哗蜈,URI類不包含任何訪問資源的方法前标,它唯一的作用就是解析。
相反的是距潘,URL類可以打開一個(gè)到達(dá)資源的流

四炼列、HTTP之請求消息request

客戶端發(fā)送一個(gè)http請求到服務(wù)器的請求消息包括以下格式:
請求行(request line)、請求頭部(header)音比、空行和請求數(shù)據(jù)四個(gè)部分組成


·請求行以一個(gè)方法符號(hào)開頭俭尖,以空格分開,后面跟著請求的URI和協(xié)議的版本洞翩。
Get請求例子稽犁,使用charles 抓取的request:

GET /562f25980001b1b106000338.jpg HTTP/1.1 
Host img.mukewang.com 
User-Agent Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36 
Accept image/webp,image/*,*/*;q=0.8 
Referer http://www.imooc.com/ 
Accept-Encoding gzip, deflate, sdch 
Accept-Language zh-CN,zh;q=0.

第一部分:請求行,用來說明請求類型骚亿,要訪問的資源以及所使用的http版本已亥。
get說明請求類型為GET,[/562f25980001b1b106000338.jpg]為要訪問的資源来屠,該行的 最后一部分說明使用的是HTTP1.1版本虑椎。
第二部分:請求頭部,緊接著請求行之后的部分俱笛,用來說明服務(wù)器要使用的附加信息
從第二行起為請求頭部捆姜,HOST將指出請求的目的地,User-Agent服務(wù)器端和客戶端腳 本都能訪問它迎膜,它是瀏覽器類型檢測邏輯的重要基礎(chǔ)泥技,該信息由你的瀏覽器來定義,并 且在每個(gè)請求中自動(dòng)發(fā)送等等
第三部分:空行磕仅,請求頭部后面空行是必須的
即使第四部分的請求數(shù)據(jù)為空珊豹,也必須有空行镊讼。
第四部分:請求數(shù)據(jù)也叫主體,可以添加任意的其他數(shù)據(jù)平夜。
這個(gè)例子的請求數(shù)據(jù)為空蝶棋。

Post請求例子,request:

POST / HTTP1.1 Host:www.wrox.com 
User-Agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
 Content-Type:application/x-www-form-urlencoded 
Content-Length:40 
Connection: Keep-Alive 
name=Professional%20Ajax&publisher=Wiley

五忽妒、HTTP之響應(yīng)信息reponse

一般情況下玩裙,服務(wù)器接收并處理客戶端發(fā)過來的請求后會(huì)返回一個(gè)HTTP的響應(yīng)信息。
HTTP響應(yīng)也由四個(gè)部分組成段直,分別為:狀態(tài)行吃溅、消息報(bào)頭、空行鸯檬、響應(yīng)正文

![Uploading image_687775.png . . .]
](http://upload-images.jianshu.io/upload_images/8816796-a913046d377b7ae1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

HTTP/1.1 200 OK 
Date: Fri, 22 May 2009 06:07:21 GMT 
Content-Type: text/html; charset=UTF-8 
<html> 
    <head></head> 
    <body> 
          <!--body goes here--> 
    </body> 
</html>

第一部分:狀態(tài)行决侈,由http協(xié)議版本號(hào),狀態(tài)號(hào)喧务,狀態(tài)消息三部分組成赖歌。
第一行為狀態(tài)行,(http/1.1)表名http版本功茴,狀態(tài)碼為200庐冯,狀態(tài)消息為(OK)
第二部分:消息報(bào)頭,用來說明客戶端要使用的一些附加信息
二三行為消息報(bào)頭坎穿,
Date:生成響應(yīng)的日期和時(shí)間展父;content-type:指定了MIME類型的HTML(text/html), 編碼類型為UTF-8
第三部分:空行,消息報(bào)頭后面的空行必須要有玲昧。
第四部分:響應(yīng)正文栖茉,服務(wù)器返回給客戶端的文本信息。
空行后面的html部分為響應(yīng)正文孵延。

六吕漂、HTTP之狀態(tài)碼

狀態(tài)碼由三個(gè)數(shù)字組成,第一個(gè)數(shù)字定義了響應(yīng)的類別隙袁,共分五種類別:
1xx:指示信息--表示請求已接受痰娱,繼續(xù)處理
2xx:成功--表示請求已被成功接收、理解菩收、接受
3xx:重定向--要完成請求必須進(jìn)行更進(jìn)一步的操作
4xx:客戶端錯(cuò)誤--請求有語法錯(cuò)誤或請求無法實(shí)現(xiàn)
5xx:服務(wù)器端錯(cuò)誤--服務(wù)器未能實(shí)現(xiàn)合法的請求
一些常見的狀態(tài)碼:
···
200 OK //客戶端請求成功
400 bad request //客戶端請求有語法錯(cuò)誤梨睁,不能被服務(wù)器所理解
401 unauthorized //請求要求用戶的省份認(rèn)證
403 forbidden //服務(wù)器理解請求客戶端的請求,但是拒絕執(zhí)行此請求
404 not found //請求資源不存在
500 internal server error//服務(wù)器發(fā)生不可預(yù)期的錯(cuò)誤
503 server unavailable //服務(wù)器當(dāng)前不能處理客戶端的請求娜饵,一段時(shí)間后可能恢復(fù)正常
···

七坡贺、HTTP請求方法

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子遍坟,更是在濱河造成了極大的恐慌拳亿,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,490評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件愿伴,死亡現(xiàn)場離奇詭異肺魁,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)隔节,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門鹅经,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人怎诫,你說我怎么就攤上這事瘾晃。” “怎么了幻妓?”我有些...
    開封第一講書人閱讀 165,830評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵蹦误,是天一觀的道長。 經(jīng)常有香客問我肉津,道長强胰,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,957評(píng)論 1 295
  • 正文 為了忘掉前任阀圾,我火速辦了婚禮哪廓,結(jié)果婚禮上狗唉,老公的妹妹穿的比我還像新娘初烘。我一直安慰自己,他們只是感情好分俯,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,974評(píng)論 6 393
  • 文/花漫 我一把揭開白布肾筐。 她就那樣靜靜地躺著,像睡著了一般缸剪。 火紅的嫁衣襯著肌膚如雪吗铐。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,754評(píng)論 1 307
  • 那天杏节,我揣著相機(jī)與錄音唬渗,去河邊找鬼。 笑死奋渔,一個(gè)胖子當(dāng)著我的面吹牛镊逝,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播嫉鲸,決...
    沈念sama閱讀 40,464評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼撑蒜,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起座菠,我...
    開封第一講書人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤狸眼,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后浴滴,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體拓萌,經(jīng)...
    沈念sama閱讀 45,847評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,995評(píng)論 3 338
  • 正文 我和宋清朗相戀三年升略,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了司志。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,137評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡降宅,死狀恐怖骂远,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情腰根,我是刑警寧澤激才,帶...
    沈念sama閱讀 35,819評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站额嘿,受9級(jí)特大地震影響瘸恼,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜册养,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,482評(píng)論 3 331
  • 文/蒙蒙 一东帅、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧球拦,春花似錦靠闭、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至谣光,卻和暖如春檩淋,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背萄金。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評(píng)論 1 272
  • 我被黑心中介騙來泰國打工蟀悦, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人氧敢。 一個(gè)月前我還...
    沈念sama閱讀 48,409評(píng)論 3 373
  • 正文 我出身青樓日戈,卻偏偏與公主長得像,于是被迫代替她去往敵國和親福稳。 傳聞我的和親對(duì)象是個(gè)殘疾皇子涎拉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,086評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理瑞侮,服務(wù)發(fā)現(xiàn),斷路器鼓拧,智...
    卡卡羅2017閱讀 134,672評(píng)論 18 139
  • 一半火、概念(載錄于:http://www.cnblogs.com/EricaMIN1987_IT/p/3837436...
    yuantao123434閱讀 8,359評(píng)論 6 152
  • HTTP概述 超文本傳輸協(xié)議(HTTP,HyperText Transfer Protocol) 是互聯(lián)網(wǎng)上應(yīng)用最...
    曹淵說創(chuàng)業(yè)閱讀 3,853評(píng)論 2 61
  • 本篇文章篇幅比較長季俩,先來個(gè)思維導(dǎo)圖預(yù)覽一下钮糖。 一、概述 1.計(jì)算機(jī)網(wǎng)絡(luò)體系結(jié)構(gòu)分層 2.TCP/IP 通信傳輸流 ...
    滌生_Woo閱讀 55,030評(píng)論 24 557
  • Http協(xié)議詳解 標(biāo)簽(空格分隔): Linux 聲明:本片文章非原創(chuàng)酌住,內(nèi)容來源于博客園作者M(jìn)IN飛翔的HTTP協(xié)...
    Sivin閱讀 5,224評(píng)論 3 82