CGI圖文詳細教程(3)
發表時間:2023-08-09 來源:明輝站整理相關軟件相關文章人氣:
[摘要]怎樣發回文檔給客戶端對于CGI的初學者,一個公共的錯誤是沒有正確格式化輸出,這樣服務器不能解釋它。CGI程序可以返回各種文件類型。它們可以返回給客戶端一張圖片、HTML文檔、明文文檔或者可能是一個音...
怎樣發回文檔給客戶端
對于CGI的初學者,一個公共的錯誤是沒有正確格式化輸出,這樣服務器不能解釋它。
CGI程序可以返回各種文件類型。它們可以返回給客戶端一張圖片、HTML文檔、明文文檔或者可能是一個音頻夾。它們同樣可能返回其它文檔給引用。客戶端必須知道哪種類型的文檔你要發送,這樣它就可以相應地將它顯示出來。為了讓客戶端知道這個,CGI程序必須通知服務器哪種類型的文檔將被返回。
為了通知服務器哪種類型的文檔你想送回,而不管這個文檔是一個完整的文檔或者一個引用,CGI要求你放置一個短的數據頭到輸出中。這個數據頭是一個ASCII文本,它包含了被linefeeds 或者 carriage返回的行,其后還跟著一個空白行。
在本例子中,你必須通過一個MIME類型通知服務器什么類型的文檔你要輸出。公共的MIME類型是一些比如html/text以及ASCII文本。
比如,為了返回HTML給客戶端,你的輸出代碼為:
Content-type: text/html
<HTML><HEAD>
<TITLE>output of HTML from CGI script</TITLE>
</HEAD><BODY>
<H1>Sample output</H1>
What do you think of <STRONG>this?</STRONG>
</BODY></HTML>
如果不輸出文檔,你可以只通知瀏覽器哪兒可以得到這個新文檔或者讓服務器自動為你輸出新的文檔。
比如,假如你想從Gopher服務器中引用一個文件。折中情況,你應該知道你想引用和輸出的完整的URL,代碼如下:
Content-type: text/html
Location: gopher://httprules.foobar.org/0
<HTML><HEAD>
<TITLE>Sorry...it moved</TITLE>
</HEAD><BODY>
<H1>Go to gopher instead</H1>
Now available at
<A HREF="gopher://httprules.foobar.org/0">a new location</A>
on our gopher server.
</BODY></HTML>
但是,現在的瀏覽器很是聰明,它會自動將新文檔顯示給你而不會看到上面的內容。如果不想輸出上面的HTML,NCSA HTTPd會為你輸出一個缺省的文檔來支持舊的瀏覽器。
如果你想引用你自己服務器上另外文件(沒有受到返回驗證的保護),你不必做太多的工作,而只需要輸出一個不完全的URL,代碼如下:
Location: /dir1/dir2/myfile.html
這時服務器就會認為客戶端沒有請求你的腳本,而是請求http://yourserver/dir1/dir2/myfile.html。你要注意文件類型以及數據頭對不對。
如果你想引用一個受到訪問驗證保護的文檔,你就不得不鍵如完整的URL,因為客戶端和服務器需要重新處理來建立你訪問引用文檔的連接。