cgi.txt
上传用户:lampled
上传日期:2007-01-07
资源大小:94k
文件大小:6k
源码类别:

Web服务器

开发平台:

Unix_Linux

  1. CGI binaries
  2.    The server, as of version 2.0, supports running system and user CGI
  3.    binaries. This means that anyone can run their own CGI binaries. What
  4.    is different about this server is that it runs users' CGI binaries
  5.    under their own user ID. This means that they have full access to
  6.    their files - they can read/write/update any file that they own.
  7.    
  8.    CGI binaries must be in the directory named cgi-bin which must be in
  9.    either the WWW server's virtual / or in the user's WWW directory (see
  10.    the local configuration section about a user's WWW directory). Since
  11.    version 2.2, the CGI binaries can be in a subdirectory of the cgi-bin
  12.    directory.
  13.    
  14.    The server is completely CGI/1.1 compliant (except that it cheats with
  15.    local file redirections). You can read about the CGI specification at
  16.    NCSA's WWW site.
  17.    
  18.    Supported environment variables are:
  19.    
  20.    SERVER_SOFTWARE
  21.           The name and version of the xs-httpd that started the binary.
  22.           Format: xs-httpd/version
  23.           
  24.    SERVER_NAME
  25.           The server's hostname, DNS alias, or IP address as it would
  26.           appear in self-referencing URLs.
  27.           
  28.    GATEWAY_INTERFACE
  29.           The revision of the CGI specification to which this server
  30.           complies. Format: CGI/revision
  31.           
  32.    SERVER_PROTOCOL
  33.           The name and revision of the information protcol this request
  34.           came in with. Format: protocol/revision
  35.           
  36.    SERVER_PORT
  37.           The port number to which the request was sent.
  38.           
  39.    REQUEST_METHOD
  40.           The method with which the request was made. For HTTP, this is
  41.           "GET", "HEAD", "POST", etc.
  42.           
  43.    PATH_INFO
  44.           The extra path information, as given by the client. In other
  45.           words, scripts can be accessed by their virtual pathname,
  46.           followed by extra information at the end of this path. The
  47.           extra information is sent as PATH_INFO. This information is
  48.           decoded by the server if it comes from a URL before it is
  49.           passed to the CGI script.
  50.           
  51.    PATH_TRANSLATED
  52.           The server provides a translated version of PATH_INFO, which
  53.           takes the path and does any virtual-to-physical mapping to it.
  54.           
  55.    SCRIPT_NAME
  56.           A virtual path to the script being executed, used for
  57.           self-referencing URLs.
  58.           
  59.    QUERY_STRING
  60.           The information which follows the ? in the URL which referenced
  61.           this script. This is the query information. It will not be
  62.           decoded in any fashion. This variable is always set when there
  63.           is query information, regardless of command line decoding.
  64.           
  65.    REMOTE_HOST
  66.           The hostname making the request. If the server does not have
  67.           this information, it will set REMOTE_ADDR and leave this unset.
  68.           
  69.    REMOTE_ADDR
  70.           The IP address in text of the remote host making the request.
  71.           
  72.    AUTH_TYPE
  73.           If the server supports user authentication, and the script is
  74.           protected, this is the protocol-specific authentication method
  75.           used to validate the user.
  76.           
  77.    REMOTE_USER
  78.           If the the script is protected, this is the username the remote
  79.           user has authenticated with.
  80.           
  81.    REMOTE_PASSWORD
  82.           If the the script is protected, this is the password the remote
  83.           user used.
  84.           
  85.    CONTENT_TYPE
  86.           For queries which have attached information, such as HTTP POST
  87.           and PUT, this is the content type of the data.
  88.           
  89.    CONTENT_LENGTH
  90.           The length of the said content as given by the client.
  91.           
  92.    The XS-HTTPD has one enhancement on the CGI specifications. It doesn't
  93.    only support the nph- naming convention (No Parse Headers), but also
  94.    the nid- naming convention (to use both, first put nph- and then
  95.    nid-). This makes the CGI binary run under nobody/nogroup, instead of
  96.    the user's own UID. For example, if you name your CGI binary
  97.    nid-form.cgi, it will run that binary under nobody/nogroup instead of
  98.    your own UID (this is to protect yourself from accidental damage).
  99.      _________________________________________________________________
  100.                                       
  101.    There is one reserved CGI binary name known as error. This binary gets
  102.    called whenever something goes wrong. Users may have their own
  103.    personal error CGI binary. This binary gets called if the server can
  104.    decode the user's name but something goes wrong anyway (for instance,
  105.    one of that user's files can't be found). If there is a system error
  106.    CGI binary, that one will be called if anything goes wrong, except in
  107.    the case that the user has a personal error CGI binary.
  108.    
  109.    This can be used to create friendly error messages with links to
  110.    appropriate (existing :) pages.
  111.    
  112.    A few environment variables are set before error is called:
  113.    
  114.    ERROR_CODE
  115.           This variable is set to one of the following values:
  116.           
  117.           + USER_UNKNOWN - the specified user is unknown
  118.           + POST_ON_NON_CGI - a POST method was attempted to a non-CGI
  119.             binary
  120.           + INVALID_PATH - an invalid path was specified, for example one
  121.             with .. in it
  122.           + DIR_NOT_AVAIL - the directory is protected by a .noxs file
  123.           + NOT_REGULAR - the file to be retrieved is not a regular file
  124.           + PERMISSION - the file's permission deny access to the file
  125.           + NOT_FOUND - the requested file cannot be found
  126.           + NO_RELATIVE_URLS - URL not starting with a / are not
  127.             supported
  128.           + UNKNOWN_METHOD - the requested method is not POST, GET or
  129.             HEAD.
  130.           + UNAUTHORIZED - a user tried an invalid usercode/password
  131.             combination to get to a file. The values in REMOTE_USER and
  132.             REMOTE_PASSWORD are what the user has tried to use.
  133.             
  134.    ERROR_READABLE
  135.           This variable contains the text that the server would normally
  136.           send to the remote client. This can be used in case you do not
  137.           want to process some of the ERROR_CODEs above.
  138.           
  139.    ERROR_URL
  140.           The URL that was requested (without the server name)
  141.           
  142.    ERROR_URL_EXPANDED
  143.           The URL that was requested with /~user/ expanded
  144.           
  145.    ERROR_URL_ESCAPED
  146.           The request URL as above, but with <, > and & substituted to
  147.           make it printable
  148.           
  149.    Of course, regular CGI variables are also set, such as REQUEST_METHOD.
  150.      _________________________________________________________________