通用网关接口

  • CGI是一个连接外部应用程序到信息服务器(比如HTTP或者网络服务器)的标准。一个简单的HTML文档是无交互后台程序,它是静态的,也就是说它处于一个不可变的状态,即文本文件不可以变化。相反地,CGI程序是可以实时执行地,它可以输出动态的信息。
  •  

    怎样发回文档给客户端
    对于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,因为客户端和服务器需要重新处理来建立你访问引用文档的连接。
     


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值