伺服器的響應如下:
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 21932
Content-Encoding: gzip
Cache-Control: max-age=300
...網頁資料...
伺服器響應的第一行總是版本號+空格+數字+空格+文字,數字表示響應程式碼,其中2xx表示成功,3xx表示重定向,4xx表示客戶端引發的錯誤,5xx表示伺服器端引發的錯誤。數字是給程式識別,文字則是給開發者除錯使用的。常見的響應程式碼有:
200 OK:表示成功;
301 Moved Permanently:表示該URL已經永久重定向;
302 Found:表示該URL需要臨時重定向;
304 Not Modified:表示該資源沒有修改,客戶端可以使用本地快取的版本;
400 Bad Request:表示客戶端傳送了一個錯誤的請求,例如引數無效;
401 Unauthorized:表示客戶端因為身份未驗證而不允許訪問該URL;
403 Forbidden:表示伺服器因為許可權問題拒絕了客戶端的請求;
404 Not Found:表示客戶端請求了一個不存在的資源;
500 Internal Server Error:表示伺服器處理時內部出錯,例如因為無法連線資料庫;
503 Service Unavailable:表示伺服器此刻暫時無法處理請求。
從第二行開始,伺服器每一行均返回一個HTTP頭。伺服器經常返回的HTTP Header包括:
Content-Type:表示該響應內容的型別,例如text/html,image/jpeg;
Content-Length:表示該響應內容的長度(位元組數);
Content-Encoding:表示該響應壓縮演算法,例如gzip;
Cache-Control:指示客戶端應如何快取,例如max-age=300表示可以最多快取300秒。
HTTP請求和響應都由HTTP Header和HTTP Body構成,其中HTTP Header每行都以\r\n結束。如果遇到兩個連續的\r\n,那麼後面就是HTTP Body。瀏覽器讀取HTTP Body,並根據Header資訊中指示的Content-Type、Content-Encoding等解壓後顯示網頁、影像或其他內容。
通常瀏覽器獲取的第一個資源是HTML網頁,在網頁中,如果嵌入了JavaScript、CSS、圖片、影片等其他資源,瀏覽器會根據資源的URL再次向伺服器請求對應的資源。