Request
包括:請求行(request line)、請求頭部(header)、空行和請求數據四個部分組成。
GET示例
1 GET /562f25980001b1b106000338.jpg HTTP/1.1
2 Host img.mukewang.com
3 User-Agent Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36
4 Accept image/webp,image/*,*/*;q=0.8
5 Referer http://www.imooc.com/
6 Accept-Encoding gzip, deflate, sdch
7 Accept-Language zh-CN,zh;q=0.8
第一部分:請求行,用來說明請求類型,要訪問的資源以及所使用的HTTP版本.
GET說明請求類型為GET,[/562f25980001b1b106000338.jpg]為要訪問的資源,該行的最后一部分說明使用的是HTTP1.1版本。
第二部分:請求頭部,緊接着請求行(即第一行)之后的部分,用來說明服務器要使用的附加信息
從第二行起為請求頭部,HOST將指出請求的目的地.User-Agent,服務器端和客戶端腳本都能訪問它,它是瀏覽器類型檢測邏輯的重要基礎.該信息由你的瀏覽器來定義,並且在每個請求中自動發送等等
第三部分:空行,請求頭部后面的空行是必須的,即使第四部分的請求數據為空,也必須有空行。
第四部分:請求數據也叫主體,可以添加任意的其他數據。這個例子的請求數據為空。
1 POST / HTTP1.1
2 Host:www.wrox.com
3 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)
4 Content-Type:application/x-www-form-urlencoded
5 Content-Length:40
6 Connection: Keep-Alive
7 name=Professional%20Ajax&publisher=Wiley
第一部分:請求行,第一行明了是post請求,以及http1.1版本。
第二部分:請求頭部,第二行至第六行。
第三部分:空行,第七行的空行。
第四部分:請求數據,第八行。
響應消息Response
服務器接收並處理客戶端發過來的請求后會返回一個HTTP的響應消息;HTTP響應也由四個部分組成,分別是:狀態行、消息報頭、空行和響應正文。
例子:
1 HTTP/1.1 200 OK
2 Date: Fri, 22 May 2009 06:07:21 GMT
3 Content-Type: text/html; charset=UTF-8
4
5 <html>
6 <head></head>
7 <body>
8 <!--body goes here-->
9 </body>
10 </html>
第一部分:狀態行,由HTTP協議版本號, 狀態碼(200), 狀態消息(OK) 三部分組成。
第二部分:消息報頭,用來說明客戶端要使用的一些附加信息
第二行和第三行為消息報頭,
Date:生成響應的日期和時間;Content-Type:指定了MIME類型的HTML(text/html),編碼類型是UTF-8
第三部分:空行,消息報頭后面的空行是必須的
第四部分:響應正文,服務器返回給客戶端的文本信息。空行后面的html部分為響應正文。
響應狀態碼:
-
1xx:指示信息--表示請求已接收,繼續處理
-
2xx:成功--表示請求已被成功接收、理解、接受
-
3xx:重定向--要完成請求必須進行更進一步的操作
-
4xx:客戶端錯誤--請求有語法錯誤或請求無法實現
-
5xx:服務器端錯誤--服務器未能實現合法的請
1 200 OK //客戶端請求成功 2 400 Bad Request //客戶端請求有語法錯誤,不能被服務器所理解 3 401 Unauthorized //請求未經授權,這個狀態代碼必須和WWW-Authenticate報頭域一起使用 4 403 Forbidden //服務器收到請求,但是拒絕提供服務 5 404 Not Found //請求資源不存在,eg:輸入了錯誤的URL 6 500 Internal Server Error //服務器發生不可預期的錯誤 7 503 Server Unavailable //服務器當前不能處理客戶端的請求,一段時間后可能恢復正常
HTTP請求方法
根據HTTP標准,HTTP請求可以使用多種請求方法。