HTTP(HyperText Transfer Protocol):超文字傳輸通訊協定 (HTTP),是一種在互連網上廣泛使用的一種網路通訊協定,設計Http協議最初的目的是為了是為了提供一種接受和發布html頁面的一種方法。通過HTTP或者HTTPS協議請求的資源由統一資源標示符(Uniform Resource Identifiers,URI)來標識。
請求資訊:
發出的請求資訊包括以下幾個
•請求行 •例如GET /images/logo.gif HTTP/1.1,表示從/images目錄下請求logo.gif這個檔案。
•(請求)頭, •例如Accept-Language: en
•空行
•其他訊息體
請求行和標題必須以<CR><LF>作為結尾。空行內必須只有<CR><LF>而無其他空格。在HTTP/1.1協議中,所有的要求標頭,除Host外,都是可選的。
要求方法:
HTTP/1.1協議中共定義了八種方法(也叫“動作”)來以不同方式操作指定的資源:
•OPTIONS:這個方法可使伺服器傳回該資源所支援的所有HTTP要求方法。用'*'來代替資源名稱,向Web伺服器發送OPTIONS請求,可以測試伺服器功能是否正常運作。
•HEAD:與GET方法一樣,都是向伺服器發出指定資源的請求。只不過伺服器將不傳回資源的本文部份。它的好處在於,使用這個方法可以在不必傳輸全部內容的情況下,就可以擷取其中“關於該資源的資訊”(元資訊或稱中繼資料)。
•GET:向指定的資源發出“顯示”請求。使用GET方法應該只用在讀取資料,而不應當被用於產生“副作用”的操作中,例如在Web Application中。其中一個原因是GET可能會被網路蜘蛛等隨意訪問。
•POST:向指定資源提交資料,請求伺服器進行處理(例如提交表單或者上傳檔案)。資料被包含在請求本文中。這個請求可能會建立新的資源或修改現有資源,或二者皆有。
•PUT:向指定資源位置上傳其最新內容。
•DELETE:請求伺服器刪除Request-URI所標識的資源。
•TRACE:回顯伺服器收到的請求,主要用於測試或診斷。
•CONNECT:HTTP/1.1協議中預留給能夠將串連改為管道方式的Proxy 伺服器。通常用於SSLData Encryption Service器的連結(經由非加密的HTTPProxy 伺服器)。
方法名稱是區分大小寫。當某個請求所針對的資源不支援對應的要求方法的時候,伺服器應當返回狀態代碼405(Method Not Allowed),當伺服器不認識或者不支援對應的要求方法的時候,應當返回狀態代碼501(Not Implemented)。
HTTP伺服器至少應該實現GET和HEAD方法,其他方法都是可選的。當然,所有的方法支援的實現都應當符合下述的方法各自的語義定義。此外,除了上述方法,特定的HTTP伺服器還能夠擴充自訂的方法。例如:
•PATCH(由RFC5789指定的方法):用於將局部修改應用到資源。
•響應
•
在接收和解釋請求訊息後,伺服器返回一個HTTP響應訊息。
HTTP響應也是由三個部分組成,分別是:狀態行、訊息前序、響應本文
1、狀態行格式如下:
HTTP-Version Status-Code Reason-Phrase CRLF
其中,HTTP-Version表示伺服器HTTP協議的版本;Status-Code表示伺服器發回的響應狀態碼;Reason-Phrase表示狀態碼的文本描述。
狀態碼有三位元字組成,第一個數字定義了響應的類別,且有五種可能取值:
1xx:指示資訊--表示請求已接收,繼續處理
2xx:成功--表示請求已被成功接收、理解、接受
3xx:重新導向--要完成請求必須進行更進一步的操作
4xx:用戶端錯誤--請求有語法錯誤或請求無法實現
5xx:伺服器端錯誤--伺服器未能實現合法的請求
常見狀態碼、狀態原因、說明:
200 OK //用戶端請求成功
400 Bad Request //用戶端請求有語法錯誤,不能被伺服器所理解
401 Unauthorized //請求未經授權,這個狀態碼必須和WWW-Authenticate前序域一起使用
403 Forbidden //伺服器收到請求,但是拒絕提供服務
404 Not Found //請求資源不存在,eg:輸入了錯誤的URL
500 Internal Server Error //伺服器發生不可預期的錯誤
503 Server Unavailable //伺服器當前不能處理用戶端的請求,一段時間後可能恢複正常
eg:HTTP/1.1 200 OK (CRLF)