官术网_书友最值得收藏!

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。

主站蜘蛛池模板: 金堂县| 旬阳县| 通海县| 芦山县| 定边县| 浑源县| 砀山县| 德州市| 龙州县| 雅安市| 长武县| 偏关县| 扎赉特旗| 泸溪县| 岑巩县| 东方市| 綦江县| 卫辉市| 东源县| 枣庄市| 张家口市| 荔波县| 颍上县| 丹阳市| 图片| 克拉玛依市| 金华市| 福建省| 久治县| 耒阳市| 集安市| 城固县| 任丘市| 曲阜市| 黄大仙区| 永城市| 洞口县| 巩留县| 尤溪县| 东台市| 定南县|