[ 永遠的UNIX::UNIX技術資料的寶庫 ]   GB | BIG5

首頁 > 編程技術 > 其它 > 正文
CGI與WEB服務器的響應頭
本文出自:http://www.01-world.com 作者: (2001-08-22 10:00:00)



我們知道 CGI 除了文本外還可以輸出其他不同的資料例如圖片、聲音等數據流,為了讓
WEBSEVER能辨認不同的數據型態,所以CGI 的輸出包括兩部分,前面的是相應頭告訴
Server要輸出的信息屬何種MIME類型,面才是我們要輸出的數據;具體上響應頭與
輸出正文、響應頭與響應頭之間是用兩個空行作為分隔的,通常大部分的CGI程序都會有
一行 print "Content-type: text/html\n\n"; 下面跟著才是要輸出的信息。這個響應
頭地意思是告訴Server要輸出的信息的MIME類型是文本/超文本。如果你是要輸出的是一
張圖片的print "Content-Type: image/gif\n\n"; 跟著是圖片的數據流就可以了。

當然響應頭的作用不僅僅是這些,利用響應頭我們在編寫CGI時大有文章可作,下面有幾
個重要的響應頭是在我們寫程序時也是很有用的:

print "Pragma:no-cache\n\n";
這個響應頭是通知瀏覽器不要把該頁面保存在緩沖區中

print "Location: URL"
返回一個指定的URL,有時如果你想讓程序動態得返回一個URL給來訪者就得用到這個響應
頭,但每次只能返回一個URL,舉個應用的例子,當你主頁訪問量較大而想減輕服務器的
負擔,那可以建立多個鏡像站點,通過CGI隨機發送鏡像站點的URL從而減輕服務器的負擔。

print "Set-Cookie:name1=value;name2=value2;exprires=DATE;PATH=PATH;domiam=DOMAIN_NAME;SECURE\n";
CGI這個響應頭就是利用這個響應頭在來訪者的計算機上設置Cookie的,如果你想知道如何
具體用CGI在來訪者的計算機上設置Cookie那請看本站的關CGI讀寫COOKIE的編程。

如果CGI程式所送出的結果不希望經過 Server 的 包 裝,而希望直接送到客戶端的瀏覽器,
則CGI必須負責送出完整的超本文傳輸協定(HTTP)訊息 封包(Message Packaged)。當Server
收到CGI程式輸出的結果時,會先檢查是否有 "HTTP/1.0" 的訊 息。如果有則Server會認為
以下的訊息已 經包 含 了完整的超本文傳輸協定(HTTP)回應,並將其直接送至客戶端的瀏
覽程式(Browser)。以下是一簡短的范例 ︰ 

print "HTTP/1.0 200 OK\n"
print "Date: Tuesday, 31-May-94 19:04:30 GMT\n";
print "erver: WebSite 2.0\n";
print "MIME-version: 1.0\n"
print "Content-type: text/html";
print "Last-modified: Sunday, 15-May-94 02:12:32 GMT\n";
print "Content-length: 4109\n\n";
print " ";
print "范 例 文 件";



為了讓WEBSERVER知道不必為CGI生成響應頭,CGI程序的文件明必須有前綴 "HPH-" 或 "nph-",
例如nph-mycgi.cgi

Status: 說明CGI執行的況狀,其值必須是超本文傳輸協定(HTTP)所認可的。 
(http://www.fanqiang.com)
    進入【UNIX論壇

相關文章
CGI與WEB服務器的響應頭 (2001-08-22 10:00:00)
響應頭204的應用 (2001-08-22 09:00:01)
 

★  樊強制作 歡迎分享  ★