Any headers which are not server directives are sent directly back to the client. Currently, this specification defines three server directives:
Content-type
This is the MIME type of the document you are returning.
Location
This is used to specify to the server that you are returning a reference to a document rather than an actual document.
If the argument to this is a URL, the server will issue a redirect to the client.
If the argument to this is a virtual path, the server will retrieve the document specified as if the client had requested that document originally. ? directives will work in here, but # directives must be redirected back to the client.
Status
This is used to give the server an HTTP/1.0 status
line to send to the client. The format is nnn xxxxx
,
where nnn
is the 3-digit status code, and
xxxxx
is the reason string, such as "Forbidden".
--- start of output --- Content-type: text/html --- end of output ---Note the blank line after Content-type.
Now, let's say I have a script which, in certain instances, wants to
return the document /path/doc.txt
from this server just
as if the user had actually requested
http://server:port/path/doc.txt
to begin with. In this
case, the script would output:
--- start of output --- Location: /path/doc.txt --- end of output ---The server would then perform the request and send it to the client.
Let's say that I have a script which wants to reference our gopher
server. In this case, if the script wanted to refer the user to
gopher://gopher.ncsa.uiuc.edu/
, it would output:
--- start of output --- Location: gopher://gopher.ncsa.uiuc.edu/ --- end of output ---Finally, I have a script which wants to talk to the client directly. In this case, if the script is referenced with
SERVER_PROTOCOL
of HTTP/1.0,
the script would output the following HTTP/1.0 response:
--- start of output --- HTTP/1.0 200 OK Server: NCSA/1.0a6 Content-type: text/plain This is a plaintext document generated on the fly just for you. --- end of output ---
CGI - Common Gateway Interface
cgi@ncsa.uiuc.edu