1. 程式人生 > >Http協議下的瀏覽器與伺服器的互動

Http協議下的瀏覽器與伺服器的互動

http是超文字傳輸協議的縮寫,顧名思義,它是瀏覽器有伺服器傳輸超文字時所要遵守的一套協議。通俗的講,http協議是基於應用層的通訊規範。所以,瞭解http協議對於web開發是尤為重要的。


一. 關於http的幾個概念:
1. 連線: 瀏覽器與伺服器之間傳輸超文字的通道。通常,瀏覽器在請求之前需要與伺服器連線,保持通訊通道開啟,才可以進行後面一系列的請求等操作,伺服器會開通連線,並對傳送請求的瀏覽器進行監聽,以便接受到瀏覽器傳送過來的請求。

2. 請求: 瀏覽器對伺服器傳送的一系列訊息,希望可以在伺服器端獲取到自己想要的資料。而這些訊息就是瀏覽器對伺服器發出的請求,一般包括請求的型別,請求的資料,請求的瀏覽器資訊等。

3. 響應: 伺服器在接到瀏覽器發出的請求後,會對這些請求做出處理,並向瀏覽器進行反饋。反饋的資料包括瀏覽器的請求是否成功,狀態碼,瀏覽請請求所需要的資料資訊等(一個html頁面,圖片等等)。


二. HTTP協議訊息結構圖

這裡寫圖片描述

這個圖清楚的顯示了瀏覽器與伺服器在http的協議下的傳輸互動過程。下面記錄一下請求報文和響應報文的格式


三. 請求報文格式

這裡寫圖片描述

通過瀏覽器開發人員工具擷取請求百度的請求體和資料體來對上圖進行說明:
這裡寫圖片描述

如上圖所示,為瀏覽器請求百度頁面的的報文,正如格式上縮寫第一行的GET就是請求方法,“/”就是url,HTTP/1.1就是協議的版本號。下面的幾行就是通用型別名,請求頭型別名等等(包括瀏覽器支援的壓縮方式,支援的語言,tcp保持連線等資訊)。


四. 響應報文格式

這裡寫圖片描述

這裡同樣列出百度的響應例子:

這裡寫圖片描述

第一行的HTTP/1.1是協議版本號,200是迴應的狀態碼,ok是解釋狀態碼的意思。這裡表示請求成功。下面是一些狀態碼的意思:
“200” : OK
“302” : Found 重定向.
“400” : Bad Request 錯誤請求,發出錯誤的不符合Http協議的請求
“403” : Forbidden 禁止
“404” : Not Found 未找到。演示訪問一個不存在的頁面看報文
“500” : Internal Server Error 伺服器內部錯誤。演示頁面丟擲異常。


五. 其他
1. http是無狀態的,當執行重新整理時,需要重複提交請求。
2. 網頁中的圖片、css、js等外部檔案都需要各自的請求
3. 基於安全考慮,伺服器不會向瀏覽器主動傳送響應,若想要伺服器想瀏覽器推送,則需要使用ajax等技術。
4. Http是“請求—響應”的工作方式。
5. 對於大檔案的傳輸需要用到斷點續傳的原理。