有沒有想過,為什麼你在瀏覽器中填入一串位址,然後enter就能開啟乙個網頁,為什麼不是別的網頁。伺服器怎麼知道使用者請求的是哪個網頁。答案就是http協議。
http協議是一種基於tcp/ip的應用層協議,掌握http協議對於web開發是非常重要的,筆者最近總結了一下與大家分享也為自己以後方便複習。客戶端連上web伺服器後,若想獲得web伺服器中的某個web資源,需遵守一定的通訊格式,http協議用於定義客戶端與web伺服器通迅的格式。
有:1.0,1.1兩個版本。在http1.0協議中,客戶端與web伺服器建立連線後,只能獲得乙個web資源,之後就會斷開鏈結。http1.1協議,允許客戶端與web伺服器建立連線後,在乙個連線上獲取多個web資源。請看下圖:客戶端連上伺服器後,向伺服器請求某個web資源,稱之為客戶端向伺服器傳送了乙個http請求。乙個完整的http請求包括如下內容:乙個請求行、若干訊息頭、以及實體內容,其中的一些訊息頭和實體內容都是可選的,訊息頭和實體內容之間要用空行隔開。如下圖所示:圖1
圖2請求行用於描述客戶端的請求方式、請求的資源名稱,以及使用的http協議版本號;
訊息頭用於描述客戶端請求哪台主機,以及客戶端的一些環境資訊等。如上圖所示,我們是通過post方式,使用的http版本號是http1.1,主機是:localhost,即本地主機。實體資訊:test。
常用請求訊息頭:
accept: text/html,image/* 說明瀏覽器接受的資料型別
accept-charset: iso-8859-1 說明瀏覽器使用的字元編碼
accept-encoding: gzip,compress 說明瀏覽器支援的壓縮格式
accept-language: en-us,zh-cn 說明瀏覽器的語言環境
host: www.it315.org:80 說明瀏覽器要訪問的主機名
if-modified-since: tue, 11 jul 2000 18:23:51 gmt 檔案的修改事件,用於做快取
referer: 說明請求來自**,防盜煉 (做實驗)
user-agent: mozilla/4.0 (compatible; msie 5.5; windows nt 5.0) 說明瀏覽器核心
cookie 向伺服器傳送cookie
connection: close/keep-alive 說明連線狀態
date: tue, 11 jul 2000 18:23:51 gmt 客戶端計算機時間
實體內容
(訊息體
)瀏覽器向伺服器傳送的資料,例如上傳的檔案、提交的表單等
1)http請求方式
post、get、head、options、delete、trace、put。但常用的只有post,get。其它幾種方式基本都用不到,這兩種方式也有很大的區別以及不同的適用場景。
a)get方式
通過get方式提交的資料會在瀏覽器位址列裡有顯示,會在請求的url位址後以?的形式帶上交給伺服器的這些資料,多個資料之間以&進行分隔。在url位址後附帶的引數是有限制的,其資料容量不能超過1k。預設情況下瀏覽器向伺服器提交的資料都是此種方式。正因為這樣get方式只適合提交一些資料量小的對安全性要求不高的資料。例如上傳檔案,使用者登入等都不能通過此種方式。
b)post方式
與get方式相比post方式沒有對提交資料的大小限制,而且所提交的資料也不會在瀏覽器位址列中顯示。這些資料會放在http請求中的實體資訊中,如:圖2中的user=test。
為了比較這兩種方式,我寫了乙個web測試專案,在此工程中有乙個1.html。關鍵**如下:
<body中有乙個表單,通過form的method指定表單的提交方式分別為post,get。運**況如下:body
>
<
form
method
="post"
action
="/1.html"
>
<
input
type
="text"
name
="user"
/>
<
input
type
="submit"
value
="submit"
/>
form
>
body
>
get方式:
post方式:
http響應訊息的內容包括
: 乙個狀態行(模擬
請求資訊的」請求行」)、若干訊息頭、以及實體內容 ,其中的一些訊息頭和實體內容都是可選的,訊息頭和實體內容之間要用空行隔開。
狀態行用於描述伺服器對請求的處理結果。
訊息頭用於描述伺服器的基本資訊,以及資料的描述,伺服器通過這些資料的描述資訊,可以通知客戶端如何處理等一會兒它回送的資料
實體內容代表伺服器向客戶端回送的資料
location: 通知瀏覽器去訪問另乙個資源
server:apache tomcat 說明伺服器
content-encoding: gzip 通知瀏覽器資料的壓縮格式
content-length: 80 通知瀏覽器傳送資料的長度
content-language: zh-cn 通知瀏覽器語言環境
content-type: text/html; charset=gb2312 通知瀏覽器檔案的格式和編碼
last-modified: tue, 11 jul 2000 18:23:51 gmt 告訴瀏覽器檔案的修改時間
refresh: 1;url= 通知瀏覽器自動重新整理
set-cookie:ss=q0=5lb_nq; path=/search 發cookie
expires: -1//3種禁止快取的頭字段
cache-control: no-cache
pragma: no-cache
connection: close/keep-alive 連線狀態
date: tue, 11 jul 2000 18:23:51 gmt 系統時間
就寫到這吧,以前都是看別人寫部落格,自己寫了才發現寫部落格也挺考驗人的毅力的。堅持。。。
HTTP協議總結
http協議是一種物件導向的協議,其簡單,快捷,方便,實用與分布式資訊網路管理系統 http協議的特點有 1.支援 c s和b s 支援客戶 伺服器模式 2.簡單快捷 向服務端請求時只需傳遞請求的方式 post,get,head,delete等 3.靈活 在傳遞時只需要在content type中定...
HTTP協議總結
http是應用層協議,由http客戶端發起乙個請求,建立乙個到伺服器指定埠的tcp連線。http 伺服器則在埠監聽客戶端的請求,一旦受到請求就會向客戶端返回乙個狀態 200,500等 以及返回內容。注 http是乙個無狀態的協議,通過伺服器認證後成功請求了乙個資源後再次請求這一資源時,伺服器仍舊會要...
http協議總結
http 全稱 超文字傳輸協議 它是乙個應用層的協議,使用埠號80,關鍵要知道它是乙個無狀態的協議。無狀態就是後續處理訊息,沒有前面的訊息。1 cookie 2 session cookie 由伺服器產生,瀏覽器收到請求後,儲存在本地 瀏覽器下次請求伺服器時,就是帶上cookie,這樣伺服器就知道是...