請求消息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,服務器端和客戶端腳本都能訪問它,它是瀏覽器類型檢測邏輯的重要基礎.該信息由你的瀏覽器來定義,並且在每個請求中自動發送等等
第三部分:空行,請求頭部后面的空行是必須的,即使第四部分的請求數據為空,也必須有空行。
第四部分:請求數據也叫主體,可以添加任意的其他數據。這個例子的請求數據為空。
POST請求例子
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 8 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://www.runoob.com/http/http-status-codes.html
HTTP請求方法
根據HTTP標准,HTTP請求可以使用多種請求方法。
HTTP1.0定義了三種請求方法: GET, POST 和 HEAD方法。
HTTP1.1新增了五種請求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。
1 GET 請求指定的頁面信息,並返回實體主體。 2 HEAD 類似於get請求,只不過返回的響應中沒有具體的內容,用於獲取報頭 3 POST 向指定資源提交數據進行處理請求(例如提交表單或者上傳文件)。數據被包含在請求體中。POST請求可能會導致新的資源的建立和/或已有資源的修改。 4 PUT 從客戶端向服務器傳送的數據取代指定的文檔的內容。 5 DELETE 請求服務器刪除指定的頁面。 6 CONNECT HTTP/1.1協議中預留給能夠將連接改為管道方式的代理服務器。 7 OPTIONS 允許客戶端查看服務器的性能。 8 TRACE 回顯服務器收到的請求,主要用於測試或診斷。