CGI与WEB服务器的响应头

我们知道 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://fanqiang.chinaunix.net/a4/b8/20010822/1000001164.html


你可能感兴趣的:(cgi)