- PHP動(dòng)態(tài)網(wǎng)站程序設(shè)計(jì)(第2版)
- 唐四薪
- 2337字
- 2020-04-22 11:55:37
1.1.4 動(dòng)態(tài)網(wǎng)站的有關(guān)概念
在學(xué)習(xí)動(dòng)態(tài)網(wǎng)站編程前,有必要明確URL、域名、HTTP和MIME這些概念。
1.URL
當(dāng)用戶使用瀏覽器訪問(wèn)網(wǎng)站時(shí),通常都會(huì)在瀏覽器的地址欄中輸入網(wǎng)站地址,這個(gè)地址就是統(tǒng)一資源定位符(URL)。URL信息會(huì)通過(guò)HTTP請(qǐng)求發(fā)送給服務(wù)器,服務(wù)器根據(jù)URL信息返回對(duì)應(yīng)的網(wǎng)頁(yè)文件代碼給瀏覽器。
URL是Internet上任何資源的標(biāo)準(zhǔn)地址,每個(gè)網(wǎng)站上的每個(gè)網(wǎng)頁(yè)(或其他文件)在Internet上都有一個(gè)唯一的URL地址,通過(guò)網(wǎng)頁(yè)的URL,瀏覽器就能定位到目標(biāo)網(wǎng)頁(yè)或資源文件。
URL的一般格式為:“協(xié)議名://主機(jī)名[:端口號(hào)][/目錄路徑/文件名][#錨點(diǎn)名]”,圖1-4所示是一個(gè)URL的示例。

圖1-4 URL的結(jié)構(gòu)
URL協(xié)議名后必須接“://”,其他各項(xiàng)之間用“/”隔開,例如,圖1-4中的URL表示信息被放在一臺(tái)被稱為www的服務(wù)器上,hynu.cn是一個(gè)已被注冊(cè)的域名,cn表示中國(guó)。主機(jī)名和域名合稱為主機(jī)頭。web/201009/是服務(wù)器網(wǎng)站目錄下的目錄路徑,而first.html是位于上述目錄下的文件名,因此通過(guò)該URL我們可以訪問(wèn)到這個(gè)文件。
在URL中,常見(jiàn)的“協(xié)議”有http和ftp。
(1)http:超文本傳輸協(xié)議,用于傳送網(wǎng)頁(yè)。例如:
http://bbs.runsky.com:8080/bbs/display.php?fd=3
(2)ftp:文件傳輸協(xié)議,用于傳送文件。例如:
① ftp://219.216.128.15/ ② ftp://001.seaweb.cn/web
2.域名
在URL中,主機(jī)名通常是域名或IP地址。最初,域名是為了方便人們記憶IP地址,使用戶在URL中可以輸入域名而不必輸入難記的IP地址。但現(xiàn)在多個(gè)域名可對(duì)應(yīng)一個(gè)IP地址(一臺(tái)主機(jī)),即在一臺(tái)主機(jī)上可架設(shè)多個(gè)網(wǎng)站,這些網(wǎng)站的存放方式稱為“虛擬主機(jī)”,此時(shí)由于一個(gè)IP地址(一臺(tái)主機(jī))對(duì)應(yīng)多個(gè)網(wǎng)站,就不能采用輸入IP地址的方式訪問(wèn)網(wǎng)站,而只能在URL中輸入域名。Web服務(wù)器為了區(qū)分用戶請(qǐng)求的是這臺(tái)主機(jī)上的哪個(gè)網(wǎng)站,通常必須為每個(gè)網(wǎng)站設(shè)置“主機(jī)頭”來(lái)區(qū)分這些網(wǎng)站。
因此域名的作用有兩個(gè),一是將域名發(fā)送給DNS服務(wù)器解析得到域名對(duì)應(yīng)的IP地址以進(jìn)行連接,二是將域名信息發(fā)送給Web服務(wù)器,通過(guò)域名與Web服務(wù)器上設(shè)置的“主機(jī)頭”進(jìn)行匹配確認(rèn)客戶端請(qǐng)求的是哪個(gè)網(wǎng)站,如圖1-5所示。若客戶端沒(méi)有發(fā)送域名信息給Web服務(wù)器,例如,直接輸入IP,則Web服務(wù)器將打開服務(wù)器上的默認(rèn)網(wǎng)站。

圖1-5 瀏覽器輸入網(wǎng)址訪問(wèn)網(wǎng)站的過(guò)程
3.HTTP請(qǐng)求和響應(yīng)的格式
HTTP是瀏覽器發(fā)送請(qǐng)求信息給服務(wù)器,服務(wù)器再傳輸超文本(或其他文檔)到瀏覽器的傳輸協(xié)議。這就是我們?cè)跒g覽器中看到的網(wǎng)頁(yè)地址都是以“http://”開頭的原因。它不僅能保證計(jì)算機(jī)正確快速地傳輸網(wǎng)頁(yè)文檔,還能確定傳輸文檔中的哪一部分,以及哪部分內(nèi)容首先顯示(如文本先于圖形)等。
HTTP包含兩個(gè)階段:請(qǐng)求階段和響應(yīng)階段。瀏覽器和Web服務(wù)器之間的每次HTTP通信(請(qǐng)求或者響應(yīng))都包含兩部分:頭部和主體。頭部包含了與通信有關(guān)的信息;主體則包含了通信的數(shù)據(jù),當(dāng)然,前提是存在這樣的數(shù)據(jù)。
(1)HTTP請(qǐng)求階段
HTTP請(qǐng)求的通用格式如下。
① 首行: HTTP方法 URL中的域名部分 HTTP版本 ② 頭部字段 ③ 空行 ④ 消息主體
以下是一個(gè)HTTP請(qǐng)求首行的示例:
GET / content.html HTTP/1.1
它表示使用GET方式向服務(wù)器請(qǐng)求content.html這個(gè)文檔,使用的協(xié)議是HTTP 1.1版本。對(duì)HTTP方法來(lái)說(shuō),最常用的是GET和POST兩種方法。GET方法用來(lái)請(qǐng)求服務(wù)器返回指定文檔的內(nèi)容;POST方法表示發(fā)送附加的數(shù)據(jù)并執(zhí)行指定的文檔,它最常見(jiàn)的應(yīng)用是從瀏覽器向服務(wù)器發(fā)送表單數(shù)據(jù),同時(shí)還發(fā)送一個(gè)請(qǐng)求執(zhí)行服務(wù)器中的某個(gè)程序(動(dòng)態(tài)頁(yè)),這個(gè)程序?qū)⑻幚磉@些表單數(shù)據(jù)。
第二部分是頭部字段,一個(gè)常用的頭部請(qǐng)求字段為Accept字段,該字段用來(lái)指定瀏覽器可以接受哪些類型的文檔,例如,Accept: text/html表示瀏覽器只可接受HTML文檔。文檔類型采用MIME類型來(lái)表示。如果瀏覽器可以接受多種格式的文檔,那么可以指定多個(gè)Accept字段。
請(qǐng)求的頭部之后必須有一個(gè)空行,該空行用于將請(qǐng)求的主體和頭部分隔開來(lái)。使用了GET方法的請(qǐng)求沒(méi)有請(qǐng)求主體。因此,這種情況下,空行是請(qǐng)求結(jié)束的標(biāo)記。
(2)HTTP響應(yīng)階段
HTTP響應(yīng)的通用格式如下:
① 狀態(tài)行 ② 響應(yīng)頭部字段 ③ 空行 ④ 響應(yīng)主體
狀態(tài)行中包含了所用HTTP的版本號(hào),此外還包括一個(gè)3位數(shù)表示的響應(yīng)狀態(tài)碼和針對(duì)狀態(tài)碼的一個(gè)簡(jiǎn)短的文本解釋。例如,大部分響應(yīng)都是以下面的狀態(tài)行開頭的。
HTTP/1.1 200 OK
它表示響應(yīng)使用的協(xié)議是HTTP 1.1,狀態(tài)碼是200,文本解釋是OK。
其中,狀態(tài)碼200表示請(qǐng)求得到處理,沒(méi)有發(fā)生任何錯(cuò)誤,這是用戶希望看到的。狀態(tài)碼404表示請(qǐng)求的文件未找到,狀態(tài)碼500表示服務(wù)器出現(xiàn)了錯(cuò)誤,且不能完成請(qǐng)求。
狀態(tài)行之后是響應(yīng)頭部字段,響應(yīng)頭部可能包含多行有關(guān)響應(yīng)的信息,每條信息都對(duì)應(yīng)一個(gè)字段。響應(yīng)頭部中必須使用的字段只有一個(gè),即Content-type。例如:
Content-type: text/html, charset=UTF-8
它表示響應(yīng)的內(nèi)容是HTML文檔,內(nèi)容采用的編碼方式是UTF-8。
響應(yīng)頭部之后必須有一個(gè)空行,這與請(qǐng)求頭部是一致的。空行之后才是響應(yīng)數(shù)據(jù)。在上例中,響應(yīng)主體是一個(gè)HTML文件。
4.MIME
瀏覽器從服務(wù)器接收返回的文檔時(shí),必須確定這個(gè)文檔屬于哪種格式。如果不了解文檔的格式,瀏覽器將無(wú)法正確顯示該文檔,因?yàn)椴煌奈臋n格式要求使用不同的解析工具,例如,服務(wù)器返回的是一個(gè)JPG圖片格式的文檔,而瀏覽器把它當(dāng)成HTML文檔去解析,則顯示出來(lái)的將是亂碼。通過(guò)多用途網(wǎng)際郵件擴(kuò)充協(xié)議(Multipurpose Internet Mail Extensions,MIME),我們可以指定文檔的格式。
MIME最初的目標(biāo)是允許各種不同類型的文檔都可以通過(guò)電子郵件發(fā)送。這些文檔可能包含各種類型的文本、視頻數(shù)據(jù)或者音頻數(shù)據(jù)。由于Web也存在這方面的需求,因此,Web中也采用了MIME來(lái)指定所傳遞的文檔類型。
Web服務(wù)器在一個(gè)將要發(fā)送到瀏覽器的文檔頭部附加了MIME的格式說(shuō)明。當(dāng)瀏覽器從Web服務(wù)器中接收到這個(gè)文檔時(shí),就根據(jù)其中包含的MIME格式說(shuō)明來(lái)確定下一步的操作。例如,文檔內(nèi)容為文本,則MIME格式說(shuō)明將通知瀏覽器文檔的內(nèi)容是文本,并指明具體的文本類型。MIME說(shuō)明的格式如下所示:
類型/子類型
最常見(jiàn)的MIME類型為text(文本)、image(圖片)和video(視頻)。其中,最常用的文本子類型為plain、html和xml。最常用的圖片子類型為gif和jpeg。服務(wù)器通過(guò)將文件的擴(kuò)展名作為類型表中的鍵值來(lái)確定文檔的類型。例如,擴(kuò)展名.html意味著服務(wù)器應(yīng)該在將文檔發(fā)送給瀏覽器之前為文檔附加MIME說(shuō)明:text/html。
- The Complete Rust Programming Reference Guide
- Instant Testing with CasperJS
- Visual FoxPro程序設(shè)計(jì)教程
- Offer來(lái)了:Java面試核心知識(shí)點(diǎn)精講(原理篇)
- R語(yǔ)言游戲數(shù)據(jù)分析與挖掘
- 用戶體驗(yàn)增長(zhǎng):數(shù)字化·智能化·綠色化
- C++新經(jīng)典
- Visual Basic程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)(第二版)
- 速學(xué)Python:程序設(shè)計(jì)從入門到進(jìn)階
- Mastering ArcGIS Enterprise Administration
- 響應(yīng)式Web設(shè)計(jì):HTML5和CSS3實(shí)戰(zhàn)(第2版)
- Programming Microsoft Dynamics? NAV 2015
- INSTANT Apache ServiceMix How-to
- 微前端設(shè)計(jì)與實(shí)現(xiàn)
- Robot Framework Test Automation