动网论坛,站长建站首选,国内使用量最多的论坛软件 动网论坛官方技术讨论区 站长工具 申请属于您自己的免费论坛
首页 | 新闻资讯 | 网站运营 | 网络编程 | 数据库 | 服务器 | 网页设计 | 图像媒体 | 网络应用 | 搜索优化 | 资源下载 | 动网主机
    本站内  互联网 ASP论坛  ASP.Net论坛  PHP论坛
   Cgi/Perl → 阅读文章

 CGI教程(3)怎样发回文档给客户端

作者来源: 
阅读 5425 人次 , 2006-4-20 8:56:00 

怎样发回文档给客户端

对于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,因为客户端和服务器需要重新处理来建立你访问引用文档的连接。
  
 
 收藏本文  打印本文  论坛讨论  关闭窗口
· 上一篇:CGI教程(2)怎样从服务器获得信息
· 下一篇:CGI教程(4)HTML 表单
· Perl6的结构
· WEB服务CGI接口漏洞分析
· CGI教程(7)解码数据发送给CGI脚本
· perl常问问题集--第一篇
· Perl教学 简单变量


关于本站 | 联系我们 | 业务合作 | 客户案例 | 诚聘英才 | 广告合作 | 收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006 Cndw.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077