Http协议简单介绍
一、Http協議解析
HTTP(HyperText Transfer Protocol)即超文本傳輸協議,是一種詳細規定了瀏覽器和萬維網服務器之間互相通信的規則,它是萬維網交換信息的基礎,它允許將HTML(超文本標記語言)文檔從Web服務器傳送到Web瀏覽器。
HTTP協議目前最新版的版本是1.1,HTTP是一種無狀態的協議,無狀態是指Web瀏覽器與Web服務器之間不需要建立持久的連接,這意味著當一個客戶端向服務器端發出請求,然后Web服務器返回響應(Response),連接就被關閉了,在服務器端不保留連接的有關信息。也就是說,HTTP請求只能由客戶端發起,而服務器不能主動向客戶端發送數據。
HTTP遵循請求(Request)/應答(Response)模型,Web瀏覽器向Web服務器發送請求時,Web服務器處理請求并返回適當的應答,如圖所示。
HTTP使用一種基于消息的模型:客戶端發送一條請求消息,而后由服務器返回一條響應消息。
?
二、Http請求
POST /test.php HTTP/1.1? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//請求行
HOST:www.test.com? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //請求頭
User-Agent:Mozilla/5.0 (windows NT 6.1;rv:15.0)Gecko/20100101 Firefox/15.0 ? ? ? ? ? ?
//空白行,代表請求頭結束
Username=admin&password=admin? ? ? ? ? ? ? ? ? ? ? ?//請求正文
?
HTTP請求包括三部分,分別是請求行(請求方法)、請求頭(消息報頭)和?請求正文。
HTTP請求第一行為請求行,由三部分組成,第一部分說明了該請求時POST請求,第二部分是一個斜杠(/login.php),用來說明請求是該域名根目錄下的login.php,第三部分說明使用的是HTTP1.1版本。
HTTP請求第二行至空白行為請求頭(也被稱為消息頭)。其中,HOST代表請求主機地址,User-Agent代表瀏覽器的標識,請求頭由客戶端自行設定。
HTTP請求第三行為請求正文,請求正文是可選的,它最常出現在POST請求方式中。
請求頭:
只出現在HTTP請求中,請求報頭允許客戶端向服務端傳遞請求的附加信息和客戶端自身信息。
- Host 請求報頭域主要用于指定被請求資源的Internet主機和端口。
- User-Agent 請求報頭域允許客戶端將它的操作系統、瀏覽器和其他屬性告訴服務器。
- Referer 包含一個URL,代表當前訪問URL的上一個URL,也就是說,用戶是從什么地方來到本頁面。當前請求的原始URL地址。
- Cookie 是非常重要的請求頭,常用來表示請求者的身份等。
- Accept 這個消息頭用于告訴服務器客戶端愿意接受那些內容,比如圖像類,辦公文檔格式等等。
三、Http請求方法
GET:GET方法用于獲取請求頁面的指定信息。如果請求資源為動態腳本(非HTML),那么返回文本是Web容器解析后的HTML源代碼。GET請求沒有消息主體,因此在消息頭后的空白行是沒有其他數據。
POST:POST方法也與GET方法相似,但最大的區別在于,GET方法沒有請求內容,而POST是有請求內容的。
HEAD:這個請求的功能與GET請求相似,不同之處在于服務器不會再其響應中返回消息主體,因此,這種方法可用于檢查某一資源在向其提交GET請求前是否存在。
PUT:PUT方法用于請求服務器把請求中的實體存儲在請求資源下,如果請求資源已經在服務器中存在,那么將會用此請求中的數據替換原先的數據。向服務器上傳指定的資源。
?
四、http響應
HTTP/1.1 200 OK ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//響應行
Date: Sun, 15 Nov 2015 11:02:04 GMT ? ? ? ? ? ? ? ? ? ? ? ? ? ?//響應頭
Server: bfe/1.0.8.9
Content-Length: 2605
Content-Type: application/javascript
Cache-Control: max-age=315360000
Expires: Fri, 13 Jun 2025 09:54:00 GMT
Content-Encoding: gzip
Set-Cookie: H_PS_PSSID=2022_1438_1944_1788; path=/; domain=test.com
Connection: keep-alive
?? ??? ??? ??? ??? ? ? ? ?//空白行,代表響應頭結束
<html>
<head><title> Index.html </title></head> ? //響應正文消息主題
?
HTTP響應的第一行為響應行,其中有HTTP版本(HTTP/1.1)、狀態碼(200)以及消息“OK”。
第二行至末尾的空白行為響應頭,由服務器向客戶端發送。
消息頭之后是響應正文,是服務器向客戶端發送的HTML數據。
響應頭
響應頭是服務器根據請求向客戶端發送的HTTP頭。
?
- Server 服務器使用的Web服務器名稱。
- Location 服務器通過這個頭告訴瀏覽器去訪問哪個頁面,瀏覽器接收到這個請求之后,通常會立刻訪問Location頭所指向的頁面。用于在重定向響應中說明重定向的目標地址。
- Content-Type 這個消息頭用于規定主體的內容類型。例如,HTML文檔的內容類型text/html。
- Content-Encoding 這個消息頭為消息主體中的內容指定編碼形式,一些應用程序使用它來壓縮響應以加快傳輸速度。
- Content-Length 消息頭規定消息主體的字節長度。實體頭用于指明實體正文的長度,以字節方式存儲的十進制數字來表示。
- Connection 允許發送指定連接的選項。
?
五、http狀態碼
?五種狀態碼:
- ?? ?1xx:信息提示,表示請求已被成功接收,繼續處理。
- ?? ?2xx:請求被成功提交。
- ?? ?3xx:客戶端被重定向到其他資源。
- ?? ?4xx:客戶端錯誤狀態碼,格式錯誤或者不存在資源。
- ?? ?5xx:描述服務器內部錯誤。
常見的狀態碼描述如下:
- 200:客戶端請求成功,是最常見的狀態。
- 302:重定向。
- 404:請求資源不存在,是最常見的狀態。
- 400:客戶端請求有語法錯誤,不能被服務器所理解。
- 401:請求未經授權。
- 403:服務器收到請求,但是拒絕提供服務。
- 500:服務器內部錯誤,是最常見的狀態。
- 503:服務器當前不能處理客戶端的請求。
?
總結
以上是生活随笔為你收集整理的Http协议简单介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java流的简介
- 下一篇: LeetCode第 3 场双周赛(201