Web基礎與HTTP協議
HTML
HTML叫做超文字標記語言,是一種規範,也是一種標準,它通過標記符號來標記要顯示的網頁中的各個部分。網頁檔案本身是一種文字檔案,通過在文字檔案中新增標記符,可以告訴瀏覽器如何顯示其中的內容。
HTML檔案可以使用任何能夠生成txt檔案的文字編輯器來編輯,生成超文字標記語言檔案,只用修改檔名字尾為”.html”或“.htm”即可。
1、HTML 基本標籤
(1)HTML 語法規則
HTML標籤採用雙標記符的形式,前後標記符對應,分別表示標記開始和結束,標記符中間的內容被標籤描述。前標記符由“<XXX>”表示,結尾標記符多了一個“/”,由“</XXX>”表示。
(2)HTML 檔案結構
HTML檔案最外層由<html></html>表示,說明該檔案是用HTML語言描述的。在它裡面是並列的頭標籤(<head>)和內容標籤(<body>),最基本的
●HTML 檔案結構如下:
-
- <html>
- <head>網頁的內容描述資訊<head>
- <body>網頁顯示的內容</body>
- </html>
●頭標籤中常用標籤:
-
- 標籤 描述
<title> 定義了文件的標題
<base> 定義了頁面連結標籤的預設連結地址
<link> 定義了一個文件和外部資源之間的關係
<meta> 定義了 HTML 文件中的元資料
<script> 定義了客戶端的指令碼檔案
<style> 定義了 HTML 文件的樣式檔案
●內容標籤中常用標籤
-
- 標籤 描述
<table> 定義一個表格
<tr> 定義了表格中的一行
<td> 定義了表格中某一行的一列
<img> 定義了一個影象
<a> 定義了一個超連結
<p> 定義了一行
<br> 定義了換行
<font> 定義了字型
2、靜態網頁與動態網頁
1.靜態網頁
在網站設計中,純粹HTML格式的網頁通常被稱為“靜態網頁”,靜態網頁是標準的HTML檔案,它的副檔名是.htm、.html。靜態網頁是網站建設的基礎,早期的網站一般都是由靜態網頁製作的。靜態網頁也可以出現各種動態的效果,如.GIF格式的動畫、FLASH、滾動字幕等。這些“動態效果”只是視覺上的,與下面將要介紹的動態網頁是不同的概念。
2.動態網頁
所謂的動態網頁,是指跟靜態網頁相對的一種網頁程式設計技術。靜態網頁,隨著HTML程式碼的生成,頁面的內容和顯示效果就基本上不會發生變化了——除非是修改頁面程式碼。而動態網頁則不然,頁面程式碼雖然沒有變,但是顯示的內容卻是可以隨著時間、環境或者資料庫操作的結果而發生改變的。動態網頁URL的字尾不是.htm、.html、.shtml、.xml等靜態網頁的常見網頁製作格式,而是以.aspx、.asp、.jsp、.php、.perl、.cgi等形式為字尾,並且在動態網頁網址中有一個標誌性的符號——“?”。
動態網頁是基本的html語法規範與Java、PHP、C#等高階程式設計語言、資料庫程式設計等多種技術的融合,以期實現對網站內容和風格的高效、動態和互動式的管理。因此,從這個意義上來講,凡是結合了HTML以外的高階程式設計語言和資料庫技術進行的網頁程式設計技術生成的網頁都是動態網頁。
3.動態網頁語言
早期的動態網頁主要採用通用閘道器介面 CGI(Common Gateway Interface)技術,雖然 CGI 技術已經發展成熟而且功能強大, 但由於程式設計困難、效率低下、修改複雜,所以有逐漸被新技術取代的趨勢。
目前常用的動態網頁程式語言如下:
●PHP
即 Hypertext Preprocessor(超文字前處理器),它是當今 Internet 上最為火熱的指令碼語言,其語法借鑑了 C、Java、PERL 等語言,但只需要很少的程式設計知識你就能使用 PHP 建立一個真正互動的 Web 站點。
●JSP
即 Java Server Pages(Java 伺服器頁面),它是由 Sun Microsystem 公司於 1999 年 6 月推出的新技術,是基於 Java Servlet 以及整個 Java 體系的 Web 開發技術。
●Python
是一種面向物件、跨平臺的動態類計算機程式設計語言,最初被設計用於編寫自動化指令碼(shell),隨著版本的不斷更新和語言新功能的新增,越來越多被用於獨立的大型專案開發。
●Ruby
是一種簡單快捷的面向物件(面向物件程式設計)指令碼語言,在 20 世紀 90年代由日本人松本行弘(Yukihiro Matsumoto) 開發,遵守GPL 協議和Ruby License。它的靈感與特性來自於 Perl、Smalltalk、Eiffel、Ada 以及 Lisp 語言。
3、HTTP 協議概述
HTTP協議採用了請求/響應模型。客戶端向伺服器傳送一個請求,請求頭包含請求的方法、URL、協議版本、以及包含請求修飾符、客戶資訊和內容的類似於MIME的訊息結構。伺服器以一個狀態行作為響應,響應的內容包括訊息協議的版本,成功或者錯誤編碼加上伺服器資訊、實體元資訊以及可能的實體內容。
HTTP 已經演化出了很多版本,它們中的大部分都是向下相容的。
(1)HTTP/0.9:已過時。只接受 GET 一種請求方法,沒有在通訊中指定版本號,且不支援請求頭。由於該版本不支援 POST 方法,所以客戶端無法向伺服器傳遞太多資訊。
(2)HTTP/1.0:這是第一個在通訊中指定版本號的 HTTP 協議版本,至今仍被廣泛採用,特別是在代理伺服器中。
(3)HTTP/1.1:當前版本。持久連線被預設採用,並能很好地配合代理伺服器工作。還支援以管道方式同時傳送多個請求,以便降低線路負載,提高傳輸速度。
HTTP 方法:
HTTP 支援幾種不同的請求命令,這些命令被稱為 HTTP 方法(HTTP method)。每條 HTTP 請求報文都包含一個方法, 告訴伺服器要執行什麼動作,包括:獲取一個頁面,執行一個閘道器程式,刪除一個檔案等。最常用的獲取資源的方法是 GET、POST。
HTTP 方法描述:
GET 請求獲取 Request-URI 所標識的資源
PUT 請求伺服器儲存一個資源,並用 Request-URI 作為其標識
DELETE 請求伺服器刪除 Request-URI 所標識的資源
POST 在 Request-URI 所標識的資源後附加新的資料
HEAD 請求獲取由 Request-URI 所標識的資源的響應訊息報頭
GET 方法採用的是 URL 字尾的形式,比如 http://www.test.com/a.php?Id=123 就是一個 GET 請求,伺服器接收後可以解析出 Id=123。而POST方法不需要在URL中顯示”?Id=123”,引數作為內容進行了隱藏的提交。因此,表單類或者有使用者名稱、密碼等內容提交時建議使用 POST 方法。
GET 方法在 URL 上顯示引數,而URL是有長度限制,故不適合提交過大的資料。GET方法可以被瀏覽器快取,當請求已經被請求過一次的 URL 時,瀏覽器不需要向伺服器再次發出請求,直接在本地快取中獲得頁面。
GET 和 POST 比較:
●GET 方法:
對資料長度的限制:URL 的長度是受限制的(URL 的最大長度是 2048 個字元)
快取:能被快取
安全性:與 POST 相比,GET 的安全性較差,因為所傳送的資料是 URL 的一部分。在傳送密碼或其他敏感資訊時絕不要使用 GET
歷史記錄:引數保留在瀏覽器歷史中
後退按鈕/重新整理:無害
書籤:可收藏為書籤
●POST 方法:
對資料長度的限制:無限制
快取:不能快取
安全性:POST 比 GET 更安全,因為引數不會被儲存在瀏覽器歷史或 Web 伺服器日誌中
歷史記錄:引數不會儲存在瀏覽器歷史中
後退按鈕/重新整理:資料會被重新提交,瀏覽器應該告知使用者資料會被重新提交
書籤:不可收藏為書籤
4、HTTP 狀態碼
HTTP 狀態碼(HTTP Status Code)是用以表示網頁伺服器 HTTP 響應狀態的 3 位數字程式碼,當瀏覽器請求某一 URL 時, 伺服器根據處理情況返回相應的處理狀態。
狀態碼首位 已定義範圍 分類
1xx 100-101 資訊提示
2xx 200-206 成功
3xx 300-305 重定向
4xx 400-415 客戶端錯誤
5xx 500-505 伺服器錯誤
HTTP 常見狀態碼:
狀態碼 功能描述
200 一切正常
301 永久重定向
302 臨時重定向
401 使用者名稱或密碼錯誤
403 禁止訪問(客戶端IP地址被拒絕)
404 檔案不存在
414 請求URI頭部過長
500 伺服器內部錯誤
502 無效閘道器
503 當前服務不可用
504 閘道器請求超時
5、HTTP 請求流程分析
使用者在瀏覽器輸入URL訪問時,發起HTTP請求報文,請求中包括請求行、請求頭、請求體,伺服器收到請求後返回響應報文,包括狀態行、響應頭、響應體。
1.請求報文
請求行:請求行由請求方法、URL 以及協議版本三部分組成。
請求頭:請求頭為請求報文添加了一些附加資訊,由“名/值”對組成,每行一對,名和值之間使用冒號分隔。
空行:請求頭部的最後會有一個空行,表示請求頭部結束,接下來為請求體,這一行非常重要,必不可少。
請求體:請求體是請求提交的引數,GET 方法已經在 URL 中指明瞭引數,所以提交時沒有資料。POST 方法提交的引數在請求體中。
常用的請求頭:
請求頭 描述
Host 接受請求的伺服器地址,可以是 IP:埠號,也可以是域名
User-Agent 傳送請求的應用程式名稱
Connection 指定與連線相關的屬性,如 Connection:Keep-Alive
Accept-Charset 通知服務端可以傳送的編碼格式
Accept-Encoding 通知服務端可以傳送的資料壓縮格式
Accept-Language 通知服務端可以傳送的語言
2.響應報文
狀態行:狀態行由協議版本,狀態碼,狀態碼描述三部分組成。
響應頭:響應頭與請求頭部類似,為響應報文添加了一些附加資訊。
空行: 響應頭部的最後會有一個空行,表示響應頭部結束。
響應體:伺服器返回的相應 HTML 資料,瀏覽器對其解析後顯示頁面。
常見響應頭
響應頭 描述
Server 伺服器應用程式軟體的名稱和版本
Content-Type 響應正文的型別(是圖片還是二進位制字串)
Content-Length 響應正文長度
Content-Charset 響應正文使用的編碼
Content-Encoding 響應正文使用的資料壓縮格式
Content-Language 響應正文使用的語言