Re: POST forms & Netscape Navigator

Paul Hethmon wrote:
> 
> ** Reply to note from Soren Vejrum <sve@europa.dannet.dk> Thu, 25 Jul 1996 11:22:35 +0200
> >
> > Matthew Denner wrote:
> > >
> > > All,
> > >
> > > I've been working on a HTTPd for about 6 months now and when I started
> > > Netscape Navigator 1.0 worked fine with POST forms.  Now I find that
> > > my POST forms don't work with Navigators 2.0 and above.  I understand
> > > that I get a POST response from the client and I can retrieve the
> > > header information but where does the actual data come from?
> > >
> > > With Navigator 1.0 the data was sent along with the header separated
> > > by at least 2 CRLF's.  Now I just get the header and the server sits
> > > in an infinite loop waiting for the data.  Have Netscape altered the
> > > way their browser works?  Does the data get sent on a different port?
> > > Or does the server have to send a response to the header so that the
> > > data can be sent by the client?
> >
> > Your problem is probably that your server reads data until the
> > connection is closed/blocked by the client as a sign that the full
> > request has been sent. However in never versions of Netscape they have
> > implemented the "Keep-Alive" header for multiple requests over a single
> > tcp/ip connection.
> >
> > Instead of reading until the end of the connection you should find the
> > "Content-Length" header which tells you the size of the POST'ed data.
> > Read this number of bytes after the 2 CRLF's.

I do read the Content-Length header and I do wait for the correct number
of
bytes to come through.  However, the connection has no data present for
collection and the machine simply sits there waiting.

> 
> What you should do is read the standard. RFC 1945 has been issued as
> an informational standard for HTTP/1.0 and HTTP/1.1 is in draft standard
> right now. You can get the latest draft standard for 1.1 from
> www.w3.org. Follow the links to the HTTP stuff.
> 

I have read the specification and have implemented an HTTP/1.1 server.

> You do have to read and parse the Content-Length to determine how much data
> to read. Doing the keep-alive is optional if you're doing a HTTP/1.0
> server. It's not part of the "standard" part of RFC 1945. It is the default
> for HTTP/1.1 which means as a server you must always send a valid Content-Length
> when sending an entity body to the client.
> 

The keep-alive header isn't implemented properly in Netscape as far as I
can
tell.  The connection is continually closed by Navigator after just one
request.
But I'm not sure on this as it could be my programming.

> A technical point here also (probably minor and fussy), but the way you
> view the separation between headers and entity body is there is only
> one empty line (CRLF). The first CRLF is attached as the end marker for the
> last header. The separation is then marked by an emtpy line. Whatever comes
> after that is the entity body.
> 

There are two CRLF's: the last line of the header, and the empty line. 
Besides
which I have altered the code to check for an empty line.

Matt
-- 
-----------------------------------------------------------------------
Matthew Denner  			email:	matt@wdi.co.uk
Senior Programmer			tel:	(+44)(0) 1305 871 543
Abbotsbury Software Ltd			fax:	(+44)(0) 1305 871 688
ENGLAND					mobile:	(+44)(0) 385  795 492
-----------------------------------------------------------------------

Received on Thursday, 25 July 1996 08:12:04 UTC