- From: Jeffrey Mogul <mogul@pa.dec.com>
- Date: Thu, 12 Mar 98 12:04:04 PST
- To: http working group <http-wg@cuckoo.hpl.hp.com>
Scott Lawrence wrote:
On Wed, 11 Mar 1998, David W. Morris wrote:
> It is my sense from list postings that a TRACE or OPTIONS request which
> referenced a specific resource which a server handed to an external
> application such as a CGI program should be handed to that program
> for handling.
>
> That is:
> OPTIONS /cgi-bin/somescript HTTP/1.1
> or
> TRACE /cgi-bin/somescript HTTP/1.1
> should be handled by the application which would respond to a GET or HEAD
> of the same resource.
I would agree for OPTIONS, since it is probably the capabilities of
the CGI or other sub-server that the requestor is interested in
(although my experience has usually been that CGIs often respond as
though the method were GET or POST because the authors don't
check).
I can't think of any reason why TRACE would require the
participation of the resource - it's purpose is just to reflect the
headers as received, and the server itself can do that just fine.
Note that the spec, in section 9.1.2 (Idempotent Methods) says
Also, the methods OPTIONS and TRACE should
have no side effects, and so are inherently idempotent.
(I'm not sure if that "should" should be a "SHOULD" or a "MUST",
or if it just means "normally.")
Later, in 9.2 (OPTIONS) the spec says:
This method allows the client to determine the
options and/or requirements associated with a resource, or the
capabilities of a server, without implying a resource action or
initiating a resource retrieval.
And in section 9.8 (TRACE) the spec says:
The TRACE method is used to invoke a remote, application-layer
loop-back of the request message.
The implication seems to me that the spec doesn't care if the
CGI (or other sub-server) is invoked for TRACE or OPTIONS ...
but you can't let this invocation cause any side-effects.
I'm not sure whether the CGI specification is sufficient
to guarantee that if the method is OPTIONS or TRACE, then
the CGI script will never cause side-effects. So it would
seem to me that a cautious implementation of TRACE, at least,
wouldn't risk invoking the CGI script.
E.g., if the client sends
TRACE /cgi-bin/action=buy&stock=sunw&quantity=100000 HTTP/1.1
Host: stockbroker.com
I think it would be a mistake to excecute the CGI script.
It's trickier with OPTIONS, since the capabilities of the CGI script
might be the target of the OPTIONS request. I suspect this means
that we're not done figuring out how OPTIONS is supposed to work ....
-Jeff
Received on Thursday, 12 March 1998 12:08:05 UTC