關於Http協議,你必須要知道的

2021-09-20 00:07:37 字數 2794 閱讀 6911

http的特點

2.靈活:http允許傳輸任意型別的資料物件。

3.無連線:無連線的含義是限制每次連線只處理乙個請求。伺服器處理完客戶的請求,並收到客戶的應答後,即斷開連線。採用這種方式可以節省傳輸時間。

http報文

http報文包括請求報文和響應報文兩大部分,其中請求報文由請求行(request line)、請求頭(header)、空行和請求體四個部分組成。而響應報文由狀態行、響應頭部、空行和響應體四個部分組成。接下來我們詳細介紹下請求報文的各個部分及其作用。

post /chapter17/user.html http/1.1
以上**中「post 」代表請求方法,「/chapter17/user.html」表示uri,「http/1.1」代表協議和協議的版本。現在比較流行的是http1.1版本

2.請求頭由關鍵字/值對組成,每行一對,關鍵字和值用英文冒號「:」分隔。

請求頭部通知伺服器有關於客戶端請求的資訊。它包含許多有關的客戶端環境和請求正文的有用資訊。其中比如:

3.最後乙個請求頭之後是乙個空行,這個行非常重要,它表示請求頭已經結束,接下來的是請求正文。

4.請求體,可以承載多個請求引數的資料

name=tom&password=1234&realname=tomson
上面**,承載著name、password、realname三個請求引數。

http請求方法get 請求指定的頁面資訊,並返回實體主體。

head 類似於get請求,只不過返回的響應中沒有具體的內容,用於獲取報頭

post 向指定資源提交資料進行處理請求(例如提交表單或者上傳檔案)。資料被包含在請求體中。

put 從客戶端向伺服器傳送的資料取代指定的文件的內容。

delete 請求伺服器刪除指定的頁面。

get與post區別

get在瀏覽器回退時是無害的,而post會再次提交請求

get請求會被瀏覽器主動快取,而post不會,除非手動設定

get請求引數會被完整保留在瀏覽器歷史記錄裡,而post中的引數不會被保留

get請求在url中傳送的引數是有長度限制的,而post沒有限制

get引數通過url傳遞,post放在request body中

http狀態碼

狀態**有三位數字組成,第乙個數字定義了響應的類別,共分五種類別:

1xx:指示資訊--表示請求已接收,繼續處理

2xx:成功--表示請求已被成功接收、理解、接受

3xx:重定向--要完成請求必須進行更進一步的操作

4xx:客戶端錯誤--請求有語法錯誤或請求無法實現

5xx:伺服器端錯誤--伺服器未能實現合法的請求

比如我們平時常見兩種出錯的狀態碼

403 forbidden //對被請求頁面的訪問被禁止

404not found //請求資源不存在,比如:輸入了錯誤的url

持久連線http協議的初始版本中,每進行一次http通訊就要斷開一次tcp連線。以當年的通訊情況來說,因為都是些容量很小的文字傳輸,所以即使這樣也沒有多大問題。可隨著 http 的 普及,文件中包含大量的情況多了起來。比如,使用瀏覽器瀏覽乙個包含多張的 html 頁面時,在傳送請求訪問 html 頁面資源的同時,也會請 求該 html 頁面裡包含的其他資源。因此,每次的請求都會造成無謂的 tcp 連線建立和斷開,增加通訊量的 開銷。為解決上述 tcp 連線的問題,http/1.1 和一部分的 http/1.0 想出了持久連線(http persistent connections,也稱為 http keep-alive 或 http connection reuse)的方法。持久連線的特點是,只要任意一端沒有明確提出斷開連線,則保持tcp連線狀態。管線化持久連線使得多數請求以管線化(pipelining)方式傳送成為可能。從前傳送請求後需等待並收到響應,才能 傳送下乙個請求。管線化技術出現後,不用等待響應亦可直接傳送下乙個請求。

假如當請求乙個包含 10 張的 html web 頁面,與挨個連線相比,用持久連線可以讓請求更快結束。 而管線化技術則比持久連線還要快。請求數越多,時間差就越明顯。客戶端需要請求這十個資源。以前的做法是,在同乙個tcp連線裡面,先傳送a請求,然後等待伺服器做出回應,收到後再發出b請求,以此類推,而管道機制則是允許瀏覽器同時發出這十個請求,但是伺服器還是按照順序,先回應a請求,完成後再回應b請求。

於是在使用持久連線的情況下,某個連線上訊息的傳遞類似於

請求1->響應1->請求2->響應2->請求3->響應3

管線化方式傳送變成了類似這樣:

請求1->請求2->請求3->響應1->響應2->響應3

關於 Http 協議,你必須要知道的

http協議是hyper text transfer protocol 超文字傳輸協議 的縮寫,是用於從全球資訊網伺服器傳輸超文字到本地瀏覽器的傳送協議。http 是基於 tcp ip 協議通訊協議來傳遞資料 html 檔案,檔案,查詢結果等 它不涉及資料報 packet 傳輸,主要規定了客戶端和伺...

關於 Http 協議,你必須要知道的

引言一 http的特點 二 http報文 1 請求行post chapter17 user.html http 1.1代表請求方法,chapter17 user html表示uri,http 1.1代表協議和協議的版本。現在比較流行的是http1.1版本。2 請求頭 值對組成,每行一對,關鍵字和值用...

關於 Http 協議,你必須要知道的

引言一 http的特點 二 http報文 1 請求行post chapter17 user.html http 1.1代表請求方法,chapter17 user html表示uri,http 1.1代表協議和協議的版本。現在比較流行的是http1.1版本。2 請求頭 值對組成,每行一對,關鍵字和值用...