Http協議由Tim Berners-Lee(被稱為Web之父)發明。Http協議是完全基於文本的。浏覽器通過http協議和服務器交互,默認是80端口。也可以顯式的在URL中指出端口號。比如:http://localhost:8080/index.html。Http協議是一種無狀態協議,並且不適合實時的獲取數據的應用,因為過多實時的客戶端和服務端的交互將會導致網絡的頻繁通信並受到帶寬的限制。Http協議也不能告訴服務器客戶的請求是如何產生的。這使得B/S比C/S實現上難度較大。
浏覽器主要有兩種命令和服務器交互,一種叫Get,另一種叫Post。邏輯上看,Get命令相當於讀操作,向服務器發出請求,然後獲取數據,Post命令向服務器發出執行某個動作的指令,有可能會修改服務器上的某些數據,因此是不可逆的操作。我們要防止用戶不斷的快速刷新頁面引發的Post命令,通常一個提示對話框讓用戶確認操作是否真的有必要進行是一種常用的方法。
Get命令的格式:請求行,請求首部,請求主體(可選)。
GET /index.html HTTP/1.0
Host: www.gefionsoftware.com
User-Agent: Mozilla/4.5 [en] (WinNT;I)
Accept: image/gif, image/jpeg, image/pjpeg, image/ping,*/*
Accept-Language : en
Accept-Charset : iso-8859-1,*,utf-8
上面的例子裡面,第一行是請求行,表明是GET命令,請求的資源是index.html ,協議是HTTP1.0。後面所有的都是請求首部,沒有請求主體。
服務器的應答格式:狀態行,應答首部,應答主體(可選)。
HTTP/1.0 200 OK
Last-Modified: Mon, 20 Dec 2001:23:26:42 GMT
Date: Tue, 11 Jan 2002 20:52:40 GMT
Status:200
Content-Type: text/html
Servlet-Engine: Tomcat Web Server/4.0.1
Content-Length: 59