HTTP,即超文本傳輸協定,是Internet上最主要的Web應用層标準。B/S架構的應用系統用HTTP在用戶端與伺服器之間的傳送資料。HTTP可以傳送任何格式的資料,從文本到圖像甚至視訊流都可以通過HTTP進行傳輸。
Http是Web浏覽器與Web伺服器之間通信的标準協定,是Internet上能夠可靠地交換檔案的重要基礎。

每個HTTP站點都有一個伺服器程序監聽着TCP的HTTP端口,HTTP端口預設為80,也可由伺服器程序設定為其他端口。當伺服器發現有用戶端建立連接配接并送出了一個HTTP請求(Request)後,就根據請求的内容執行相應的操作,并将結果傳回給用戶端(Response)。通常客戶在浏覽器中發起一次網絡通路的步驟如下:
輸入網址并按<code>Enter鍵</code>,比如通路http://mysite:8080/app/index.html
浏覽器通過域名系統查詢mysite的真實IP,比如212.34.98.20
向伺服器212.34.98.20的8080端口發起TCP連接配接請求并建立連接配接
發送HTTP請求的内容,包括通路的位址/app/index.html,通路方式GET,浏覽器本身的産品名等
伺服器傳回/app/index.html中的資料作為Response發送給用戶端。如果請求的不是一個檔案,則伺服器需要執行相應的代碼,動态生成且傳回給用戶端
浏覽器接收到結果後關閉與伺服器的TCP連接配接
浏覽器将接收到的結果呈現在顯示器上
注意:域名解析本身不是HTTP的一部分,用戶端應在向伺服器建立TCP連接配接之前就通過DNS伺服器完成域名解析工作
以上是最典型的HTTP流程,當今的HTTP版本還允許用戶端在一次HTTP請求完成後不關閉TCP連接配接,以便之後第2次發送HTTP請求時複用該連接配接,以達到減少系統整體開銷的目的,此技術在HTTP中叫做keep-alive.
HTTP的兩種消息(Resquest和Response)采用不同的消息結構,Request的格式如下:
結構格式由兩部分組成:消息頭(HTTP HEAD),消息體(HTTP BODY)。X消息體則沒有固定格式:HEAD與BODY之間以一個空行分隔。上述格式中的請求方法,URL,協定版本,頭字段等都屬于消息頭。常用的消息體格式包括HTML,XML,JSON等。
Response是伺服器根據客戶的的請求包做相應處理後向用戶端傳回的結果,Response的格式如下:
DELETE : 從給定的位址中删除資訊
GET : 從通路的位址中擷取資訊,即擷取資訊頭,也擷取資訊體。這是網際網路上最主要的一種HTTP通路方式
HEAD : 從通路的位址中呢擷取資訊,它與GET的差別是:HEAD隻擷取資訊頭,不擷取資訊體。在Flask路由中如果聲明了GET通路方式,則無須顯示地聲明HEAD通路方式
OPTIONS : 為用戶端提供一種查詢“本URL位址中有哪些可用的通路方式”的方法
POST : 用戶端通過POST通路向伺服器送出新資料,伺服器必須保證資料被完整地儲存,并且伺服器不允許出現重複的POST資料送出。這是HTML中通過表單(Form)送出資料所使用的URL通路方式。
PUT : 與POST通路方法類似,POST也是一種使用戶端可用想伺服器送出資料的方式,但是PUT允許用戶端送出重複主鍵的資料,當通過PUT通路方式在伺服器中發現重複主鍵的資料時,它會用新送出的資料覆寫伺服器中已有的資料。