HTTP-請求匈挖、響應(yīng)詳細說明

不管是別人提起還是自己提起對Http的了解碾牌,雖然會用但是卻不知從何說起,我把這點總結(jié)為基礎(chǔ)不是很扎實儡循,借此作如下歸納舶吗,以加強對HTTP的了解

HTTP請求格式:

HTTP協(xié)議采用 “消息頭/消息體”的分割方式,消息頭告訴對方這個消息是干什么的择膝,消息體告訴對方怎么干誓琼。每一個HTTP包都分為HTTP頭和HTTP體兩部分,消息體是可選的,而消息頭是必須的

http請求方法:最常用的是GET腹侣、POST

GET作用: 請求獲取由 Request-URI 所標識的資源
GET說明: GET是默認的HTTP請求方法叔收,例如當我們通過在瀏覽器的地址欄中直接輸入網(wǎng)址的方式去訪問網(wǎng)頁的時候,瀏覽器采用的就是 GET 方法向服務(wù)器獲取資源傲隶。用GET方法提交的表單數(shù)據(jù)只經(jīng)過了簡單的編碼饺律,同時它將作為URL的一部分向服務(wù)器發(fā)送。也就是說get方法的請求參數(shù)是攜帶在請求頭中的伦籍,因為請求頭是有長度限制的蓝晒,所以請求參數(shù)也會有長度限制腮出。
例如:

<Http://localhost/login.php?username=aa&password=1234>

POST作用 : 請求服務(wù)器接收在請求中封裝的實體帖鸦,并將其作為由 Request-Line 中的 Request-URI 所標識的資源的一部分
POST說明: POST的請求參數(shù)是請求體中,因此沒有長度限制

GET和POST的區(qū)別:

1胚嘲、 在客戶端作儿,Get方式在通過URL提交數(shù)據(jù),數(shù)據(jù)在URL中可以看到馋劈;POST方式攻锰,數(shù)據(jù)放在HTTP包的body中。

2妓雾、 GET方式提交的數(shù)據(jù)大小有限制(因為瀏覽器對URL的長度有限制)娶吞,而POST則沒有此限制。

3械姻、安全性問題妒蛇。正如在(1)中提到,使用 Get 的時候楷拳,參數(shù)會顯示在地址欄上绣夺,而 Post 不會。所以欢揖,如果這些數(shù)據(jù)是中文數(shù)據(jù)而且是非敏感數(shù)據(jù)陶耍,那么使用 get;如果用戶輸入的數(shù)據(jù)不是中文字符而且包含敏感數(shù)據(jù)她混,那么還是使用 post為好烈钞。

4.、服務(wù)器取值方式不一樣坤按。GET方式取值毯欣,如php可以使用$_GET來取得變量的值,而POST方式通過$_POST來獲取變量的值晋涣。

http請求數(shù)據(jù)示例:

POST /index.php HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:10.0.2) Gecko/20100101 Firefox/10.0.2
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-cn,zh;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: http://localhost/
Content-Length:25
Content-Type:application/x-www-form-urlencoded

username=aa&password=1234

http的請求由請求行仪媒、請求頭、請求正文組成

 請求行:請求方法 URI 協(xié)議/版本

 請求頭(Request Header)

 請求正文
 

請求頭:

表示持久連接

connection:Kepp-Alive

例如: Connection: keep-alive 當一個網(wǎng)頁打開完成后,客戶端和服務(wù)器之間用于傳輸HTTP數(shù)據(jù)的TCP連接不會關(guān)閉算吩,如果客戶端再次訪問這個服務(wù)器上的 網(wǎng)頁留凭,會繼續(xù)使用這一條已經(jīng)建立的連接

例如: Connection: close 代表一個Request完成后,客戶端和服務(wù)器之間用于傳輸HTTP數(shù)據(jù)的TCP連接會關(guān)閉偎巢, 當客戶端再次發(fā)送Request蔼夜,需要重新建立TCP連接

Accept:

作用:瀏覽器可以接受的媒體類型(MIME類型),

例如: Accept: text/html 代表瀏覽器可以接受服務(wù)器回發(fā)的類型為 text/html 也就是我們常說的html文檔, 如果服務(wù)器無法返回text/html類型的數(shù)據(jù),服務(wù)器應(yīng)該返回一個406錯誤(non acceptable)压昼。

通配符 * 代表任意類型求冷。例如 Accept: / 代表瀏覽器可以處理所有類型,(一般瀏覽器發(fā)給服務(wù)器都是發(fā)這個)

Accept-Encoding:

作用: 瀏覽器申明自己接收的編碼方法窍霞,通常指定壓縮方法匠题,是否支持壓縮,支持什么壓縮方法(gzip但金,deflate)韭山,(注意:這不是只字符編碼);

例如: Accept-Encoding: gzip, deflate。Server能夠向支持gzip/deflate的瀏覽器返回經(jīng)gzip或者deflate編碼的HTML頁面冷溃。 許多情形下這可以減少5到10倍的下載時間钱磅,也節(jié)省帶寬。

Accept-Language:

作用: 瀏覽器申明自己接收的語言似枕。

語言跟字符集的區(qū)別:中文是語言盖淡,中文有多種字符集,比如big5凿歼,gb2312褪迟,gbk等等;

例如: Accept-Language:zh-cn 毅往。如果請求消息中沒有設(shè)置這個報頭域牵咙,服務(wù)器假定客戶端對各種語言都可以接受。

User-Agent:

作用:告訴HTTP服務(wù)器攀唯, 客戶端使用的操作系統(tǒng)和瀏覽器的名稱和版本.

我們上網(wǎng)登陸論壇的時候洁桌,往往會看到一些歡迎信息,其中列出了你的操作系統(tǒng)的名稱和版本侯嘀,你所使用的瀏覽器的名稱和版本另凌,這往往讓很多人感到很神奇,實際上戒幔, 服務(wù)器應(yīng)用程序就是從User-Agent這個請求報頭域中獲取到這些信息User-Agent請求報頭域允許客戶端將它的操作系統(tǒng)吠谢、瀏覽器和其它屬性告訴服務(wù)器。

例如: User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; CIBA; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; InfoPath.2; .NET4.0E)

Cookie:

作用: 最重要的header, 將cookie的值發(fā)送給HTTP 服務(wù)器

Content-Length

作用:發(fā)送給HTTP服務(wù)器數(shù)據(jù)的長度诗茎。即請求消息正文的長度工坊;

例如: Content-Length: 38

Content-Type:

作用:Content-Type用于指定內(nèi)容類型,一般是指網(wǎng)頁中存在的Content-Type,Content-Type屬性指定請求和響應(yīng)的HTTP內(nèi)容類型王污。如果未指定 ContentType罢吃,默認為text/htm

例如:Content-Type: application/x-www-form-urlencoded

Content-Type: 

1.text/html
2.text/plain
3.text/css
4.text/javascript
5.application/x-www-form-urlencoded
6.multipart/form-data
7.application/json
8.application/xml

1. application/x-www-form-urlencoded是常用的表單發(fā)包方式,普通的表單提交昭齐,或者js發(fā)包尿招,默認都是通過這種方式

2. multipart/form-data用在上傳文件的POST包。

3. boundary用于數(shù)據(jù)分割阱驾, 當上傳文件太長就谜,HTTP無法在一個包之內(nèi)發(fā)送完畢,就需要分割數(shù)據(jù)里覆,分割成一個一個chunk發(fā)送給服務(wù)端

4. .application/json 通過json形式將數(shù)據(jù)發(fā)送給服務(wù)器丧荐,HTTP通信中并不存在所謂的json,而是將string轉(zhuǎn)成json罷了租谈,也就是篮奄,application/json可以將它理解為text/plain捆愁,普通字符串

http響應(yīng)數(shù)據(jù)示例

HTTP/1.1 200 OK
Date: Sun, 17 Mar 2013 08:12:54 GMT
Server: Apache/2.2.8 (Win32) PHP/5.2.5
X-Powered-By: PHP/5.2.5
Set-Cookie: PHPSESSID=c0huq7pdkmm5gg6osoe3mgjmm3; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Length: 4393
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=utf-8


<html>
<head>
<title>HTTP響應(yīng)示例<title>
</head>
<body>
Hello HTTP!
</body>
</html>

在接受和解釋請求消息后割去,服務(wù)器會返回一個http響應(yīng)消息,http響應(yīng)消息也是由三個部分組成分別是狀態(tài)行昼丑、響應(yīng)頭呻逆、響應(yīng)正文

狀態(tài)行

狀態(tài)行由協(xié)議版本、響應(yīng)狀態(tài)碼組成(200 ok)

狀態(tài)碼說明:

1xx:指示信息——表示請求已經(jīng)接受菩帝,繼續(xù)處理
2xx:成功——表示請求已經(jīng)被成功接收咖城、理解、接受呼奢。
3xx:重定向——要完成請求必須進行更進一步的操作
4xx:客戶端錯誤——請求有語法錯誤或請求無法實現(xiàn)
5xx:服務(wù)器端錯誤——服務(wù)器未能實現(xiàn)合法的請求宜雀。
常見狀態(tài)代碼、狀態(tài)描述握础、說明:
200 OK      //客戶端請求成功
400 Bad Request  //客戶端請求有語法錯誤辐董,不能被服務(wù)器所理解
401 Unauthorized //請求未經(jīng)授權(quán),這個狀態(tài)代碼必須和WWW-Authenticate報頭域一起使用 
403 Forbidden  //服務(wù)器收到請求禀综,但是拒絕提供服務(wù)
404 Not Found  //請求資源不存在简烘,eg:輸入了錯誤的URL
500 Internal Server Error //服務(wù)器發(fā)生不可預(yù)期的錯誤
503 Server Unavailable  //服務(wù)器當前不能處理客戶端的請求,一段時間后可能恢復(fù)正常

總結(jié)如下:

1XX 響應(yīng)中
2XX 成功
3XX 重定向
4XXX 客戶端錯誤
5XXX 服務(wù)器錯誤

Date:

作用:生成消息的具體時間和日期定枷,即當前的GMT時間孤澎。

例如: Date: Sun, 17 Mar 2013 08:12:54 GMT

Set-Cookie

作用: 非常重要的header, 用于把cookie 發(fā)送到客戶端瀏覽器, 每一個寫入cookie都會生成一個Set-Cookie.

例如: Set-Cookie: PHPSESSID=c0huq7pdkmm5gg6osoe3mgjmm3; path=/

Content-Type:

作用:WEB服務(wù)器告訴瀏覽器自己響應(yīng)的對象的類型和字符集,

Content-Length:

指明實體正文的長度欠窒,以字節(jié)方式存儲的十進制數(shù)字來表示覆旭。在數(shù)據(jù)下行的過程中,Content-Length的方式要預(yù)先在服務(wù)器中緩存所有數(shù)據(jù),然后所有數(shù)據(jù)再一股腦兒地發(fā)給客戶端型将。

例如: Content-Length: 19847

Content-Encoding:

作用:文檔的編碼(Encode)方法絮供。一般是壓縮方式。

WEB服務(wù)器表明自己使用了什么壓縮方法(gzip茶敏,deflate)壓縮響應(yīng)中的對象壤靶。利用gzip壓縮文檔能夠顯著地減少HTML文檔的下載時間。

例如:Content-Encoding:gzip

Location:

作用: 用于重定向一個新的位置惊搏, 包含新的URL地址

實例請看304狀態(tài)實例

注意

HTTP協(xié)議是無狀態(tài)的和Connection: keep-alive的區(qū)別
無狀態(tài)是指協(xié)議對于事務(wù)處理沒有記憶能力贮乳,服務(wù)器不知道客戶端是什么狀態(tài)。從另一方面講恬惯,打開一個服務(wù)器上的網(wǎng)頁和你之前打開這個服務(wù)器上的網(wǎng)頁之間沒有任何聯(lián)系向拆。

HTTP是一個無狀態(tài)的面向連接的協(xié)議,無狀態(tài)不代表HTTP不能保持TCP連接酪耳,更不能代表HTTP使用的是UDP協(xié)議(無連接)浓恳。

從HTTP/1.1起,默認都開啟了Keep-Alive碗暗,保持連接特性颈将,簡單地說,當一個網(wǎng)頁打開完成后言疗,客戶端和服務(wù)器之間用于傳輸HTTP數(shù)據(jù)的TCP連接不會關(guān)閉晴圾,如果客戶端再次訪問這個服務(wù)器上的網(wǎng)頁,會繼續(xù)使用這一條已經(jīng)建立的連接噪奄。

Keep-Alive不會永久保持連接死姚,它有一個保持時間,可以在不同的服務(wù)器軟件(如Apache)中設(shè)定這個時間

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末勤篮,一起剝皮案震驚了整個濱河市都毒,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌碰缔,老刑警劉巖账劲,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異手负,居然都是意外死亡涤垫,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門竟终,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蝠猬,“玉大人,你說我怎么就攤上這事统捶∮苈” “怎么了柄粹?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長匆绣。 經(jīng)常有香客問我驻右,道長,這世上最難降的妖魔是什么崎淳? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任堪夭,我火速辦了婚禮,結(jié)果婚禮上拣凹,老公的妹妹穿的比我還像新娘森爽。我一直安慰自己,他們只是感情好嚣镜,可當我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布爬迟。 她就那樣靜靜地躺著,像睡著了一般菊匿。 火紅的嫁衣襯著肌膚如雪付呕。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天跌捆,我揣著相機與錄音徽职,去河邊找鬼。 笑死疹蛉,一個胖子當著我的面吹牛活箕,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播可款,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼克蚂!你這毒婦竟也來了闺鲸?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤埃叭,失蹤者是張志新(化名)和其女友劉穎摸恍,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體赤屋,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡立镶,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了类早。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片媚媒。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖涩僻,靈堂內(nèi)的尸體忽然破棺而出缭召,到底是詐尸還是另有隱情栈顷,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布嵌巷,位于F島的核電站萄凤,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏搪哪。R本人自食惡果不足惜靡努,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望晓折。 院中可真熱鬧颤难,春花似錦、人聲如沸已维。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽垛耳。三九已至栅屏,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間堂鲜,已是汗流浹背栈雳。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留缔莲,地道東北人哥纫。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像痴奏,于是被迫代替她去往敵國和親蛀骇。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,901評論 2 345

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理读拆,服務(wù)發(fā)現(xiàn)擅憔,斷路器,智...
    卡卡羅2017閱讀 134,601評論 18 139
  • 一檐晕、概念(載錄于:http://www.cnblogs.com/EricaMIN1987_IT/p/3837436...
    yuantao123434閱讀 8,330評論 6 152
  • Http協(xié)議詳解 標簽(空格分隔): Linux 聲明:本片文章非原創(chuàng)暑诸,內(nèi)容來源于博客園作者MIN飛翔的HTTP協(xié)...
    Sivin閱讀 5,205評論 3 82
  • HTTP協(xié)議(HyperText Transfer Protocol,超文本傳輸協(xié)議):是一種發(fā)布和接收 HTML...
    amuqiao閱讀 4,707評論 0 3
  • 探春是十二金釵中理性與感性最平衡的辟灰,她善于觀察个榕、思考,頭腦清楚芥喇,很有管理才能西采,看她代理王熙鳳管理榮國府的做派...
    賽閑人閱讀 305評論 1 0