Web基礎與HTTP協議

HTMLphp

HTML叫作超文本標記語言,是一種規範,也是一種標準,它經過標記符號來標記要顯示的網頁中的各個部分。網頁文件自己是一種文本文件,經過在文本文件中添加標記符,能夠告訴瀏覽器如何顯示其中的內容。html

HTML文件可使用任何可以生成txt文件的文本編輯器來編輯,生成超文本標記語言文件,只用修改文件名後綴爲」.html」或「.htm」便可。shell

一、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> 定義了字體服務器


二、靜態網頁與動態網頁
  1.靜態網頁jsp

在網站設計中,純粹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 語言。

 

三、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 服務器日誌中

歷史記錄:參數不會保存在瀏覽器歷史中

後退按鈕/刷新:數據會被從新提交,瀏覽器應該告知用戶數據會被從新提交

書籤:不可收藏爲書籤


四、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                              網關請求超時


五、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                    響應正文使用的語言

相關文章
相關標籤/搜索