http(hypertext transfer protocol, 超文字傳輸協議)是網際網路上應用最為廣泛的一種網路協議,它是基於 tcp 的應用層協議,簡單地說就是客戶端和伺服器進行通訊的一種規則,它的模式非常簡單,就是客戶端發起請求,伺服器響應請求,如下圖所示:
http 最早於 1991 年發布,是 0.9 版,不過目前該版本已不再用。http 目前在使用的版本主要有:
http 請求由三部分組成:
訊息報頭:包含一系列的鍵值對
請求正文(可選):注意和訊息報頭之間有乙個空行
如圖所示:
下面是乙個 http get 請求的例子:
上面的第一行就是乙個請求行:
get / http/1.1
其中,get
是請求方法,表示從伺服器獲取資源;/
是乙個請求位址;http/1.1
表明 http 的版本是 1.1。
請求行後面的一系列鍵值對就是訊息報頭:
其中:
http 通過不同的請求方法以多種方式來操作指定的資源,常用的請求方法如下表:
方法描述
get從伺服器獲取指定(請求位址)的資源的資訊,它通常只用於讀取資料,就像資料庫查詢一樣,不會對資源進行修改。
post
向指定資源提交資料(比如提交表單,上傳檔案),請求伺服器進行處理。資料被包含在請求正文中,這個請求可能會建立新的資源或更新現有的資源。
put通過指定資源的唯一標識(在伺服器上的具體存放位置),請求伺服器建立或更新資源。
delete
請求伺服器刪除指定資源。
head
與 get 方法類似,從伺服器獲取資源資訊,和 get 方法不同的是,head 不含有呈現資料,僅僅是 http 頭資訊。head 的好處在於,使用這個方法可以在不必傳輸全部內容的情況下,就可以獲得資源的元資訊(或元資料)。
options
該方法可使伺服器傳回資源所支援的所有 http 請求方法。
注意到,post 和 put 都可用於建立或更新資源,然而,它們之間還是有比較大的區別:
在上面,post 對應的 uri 是/articles
,它是資源的接收者,而非資源的標識,如果資源被成功建立,伺服器可以返回201 created
狀態以及新建資源的位置,比如:
我們如果知道新建資源的識別符號,可以使用 put 來建立資源,比如:
在上面,put 對應的 uri 是/articles/abcdef234
,它指明了資源的存放位置,如果資源被成功建立,伺服器可以返回201 created
狀態以及新建資源的位置,比如:
而使用 post,可以更新某個域的值:
http 方法的冪等性是指一次和多次請求某乙個資源應該具有同樣的***,注意這裡是***,而不是返回結果。get方法用於獲取資源,不會改變資源的狀態,不論呼叫一次還是多次都沒有***,因此它是冪等的;delete方法用於刪除資源,有***,但呼叫一次或多次都是刪除同個資源,產生的***是相同的,因此也是冪等的;post是不冪等的,因為兩次相同的 post 請求會在伺服器建立兩份資源,它們具有不同的 uri;put是冪等的,對同一 uri 進行多次 put 的***和一次 put 是相同的。
http 響應與 http 請求相似,由三部分組成:
如圖所示:
下面是乙個 http get 請求的響應結果:
}上面的第一行就是乙個狀態行:
http/1.1 200 ok
其中,200
是狀態碼,表示客戶端請求成功,ok
是相應的狀態描述。
狀態碼是乙個三位的數字,常見的狀態碼有以下幾類:
3xx 重定向 -- 需要後續操作才能完成這一請求
4xx 請求錯誤 -- 請求含有詞法錯誤或者無法被執行
5xx 伺服器錯誤 -- 伺服器在處理某個正確請求時發生錯誤
狀態行後面的一系列鍵值對就是訊息報頭,即響應頭:
server: nginx
date: tue, 29 nov 2016 13:08:38 gmt
content-length: 203
connection: close
access-control-allow-origin: *
access-control-allow-credentials: true
其中:
get 可提交的資料量受到 url 長度的限制,http 協議規範沒有對 url 長度進行限制,這個限制是特定的瀏覽器及伺服器對它的限制。
理論上講,post 是沒有大小限制的,http 協議規範也沒有進行大小限制,出於安全考慮,伺服器軟體在實現時會做一定限制。
HTTP協議簡介
現在web發展如火如荼,web開發人員也越來越多,但有幾個對支援web的http協議有了解呢?底層協議基礎不紮實,高層應用是很難做到極致的。帶著好奇心,開始學習吧!http hypertext transfer protocol 即超文字傳輸協議,是瀏覽器和伺服器之間互相通訊的一種約定,通過網際網路...
HTTP協議 簡介
全稱為超文字傳輸協議 hypertext transfer protocol 設計之初是為了將超文字標記語言 html 文件從web伺服器傳送到客戶端的瀏覽器。現在http的作用已不侷限於html的傳輸。url url示例 解釋 scheme 指定低層使用的協議 例如 http,https,ftp ...
http協議簡介
摘要 本文 go web程式設計 一書,覺得說的比較好,特轉過來收藏。我們平時瀏覽網頁的時候,會開啟瀏覽器,輸入 後按下回車鍵,然後就會顯示出你想要瀏覽的內容。在這個看似簡單的使用者行為背後,到底隱藏了些什麼呢?對於普通的上網過程,系統其實是這樣做的 瀏覽器本身是乙個客戶端,當你輸入url的時候,首...