Re: CGP/1.0 specification

robm@ncsa.uiuc.edu (Rob McCool)
Message-id: <9311192226.AA18159@void.ncsa.uiuc.edu>
From: robm@ncsa.uiuc.edu (Rob McCool)
Date: Fri, 19 Nov 1993 16:26:28 -0600
In-Reply-To: George Phillips <phillips@cs.ubc.ca>
       "Re: CGP/1.0 specification" (Nov 18,  6:36pm)
X-Mailer: Mail User's Shell (7.2.5 10/14/92)
To: George Phillips <phillips@cs.ubc.ca>, www-talk@nxoc01.cern.ch
Subject: Re: CGP/1.0 specification
/*
 * Re: CGP/1.0 specification  by George Phillips (phillips@cs.ubc.ca)
 *    written on Nov 18,  6:36pm.
 *
 * It's useful for scripts to know what part of the URL was used to invoke
 * them (Rob suggested $SCRIPT_NAME before).  That information is currently
 * implicit in the spec.  It can be derived by looking at the first
 * length(FULL_URL) - length(PATH_INFO) characters of FULL_URL.  If
 * this is true, that's fine, but maybe we'd rather just have
 * SCRIPT_NAME and PATH_INFO and drop FULL_URL in favor of it the
 * simple $SCRIPT_NAME$PATH_INFO derivation.  Or have all 3, whatever.

This is true, it makes FULL_URL frivolous. Unless there are any serious
objections, I'd like to remove it from the spec.

 * A few other comments:
 * 
 * >GATEWAY_PROTOCOL:      The revision of this spec to which the server complies
 * 
 * Why not make this a mime-like typename, say "CGP/1.0" for this version?

This is what I had in mind.

I was thinking about it, and this is not really a protocol but an interface.
What do you all think about changing it to CGI/1.0?

 * >*** The script's STDOUT
 * ...
 * >If the script returns a header line of "Parse-header: false", the
 * >server will pass the rest of the output stream directly to the client.
 * 
 * This is not really part of the protocol, but if the server had some
 * way to tell that the script was always going to do it's own headers,
 * we could avoid the extra overhead of having the server chop the
 * (constant) "Parse-header: false\r\n\r\n" bit and re-copying the data.
 * I suppose it would save a little cross-configuration if the server
 * told the script what it expected.  That begs for breaking the
 * GATEWAY_PROTOCOL variable into GATEIN_PROTOCOL and GATEOUT_PROTOCOL.
 * We still only have "CGP/1.0" for GATEIN_PROTOCOL, but we'd have
 * "CGP/1.0" for GATEOUT_PROTOCOL where the server looks at things and
 * "HTTP/1.0" for GATEOUT_PROTOCOL which means do it yourself
 * (or HTTP/0.9).

The problem is that I'd like scripts to have the flexibility of returning
the header if they so choose, without the server deciding for them.

How about, instead of "Parse-header", changing it to "Gateway-protocol" and
making it a word such as "HTTP/1.0" or "CGI/1.0"? This does not help your
concern of header-parsing overhead, but I think we can't avoid it anyway.

 * As to the question of whether Location: should interpret a virtual
 * of real pathname, I'd say that it should be virtual.  If the
 * script wants to output a real path name, it can "cat /a/real/path/name".
 * Also, the virtual path name gives it the flexibility to activate
 * some other gateway.
 */

See my response in another note...

--Rob