HTTP for servers

Disclosure: And-httpd is a HTTP server I wrote.

You've all seen HTTP requests, right? They're simple and look like:

GET / HTTP/1.1
Host: foo.example.com
Accept: text/plain;q=0.1,text/*;q=1,*/*;q=0
Range: bytes=8-

...right? WRONG. This is the exact same request, and is completely rfc2616 compliant:

GET    /    HTTP   /   1  .   1
Accept:  text/plain   ;  q    = 0
         .1
        ,,,,
         ,,
      ,,,  ,,,
      ,,,  ,,,
      ,,,,,,,,
        ,,,,
         ,,
                    text/*  ; q =
         1                        . 00        
Range: bytes                    =
         8 
         -
Host: 
       foo.example.com
       
Accept:                , */* ; q = 0 ,

If you too wish to explore the joy of simplicity that is the HTTP/1.1 rfc, you can look at either the w3 html version of rfc2616 or the ietf text version of rfc2616. The rest of this page includes tips, and "opinions".

Headers

This a list of the std. HTTP/1.1 headers a read-only server MAY, SHOULD, or MUST understand (see rfc4229 for a list of all headers).

Features of HTTP/1.1, and rants about them

This is a list of "features" in the HTTP/1.1 "standard". Some are just bad standardization of current practice, some are features at the wrong layer and some are bits the std. didn't cover well. Almost all servers fail some of these (even apache-httpd doesn't pass them all).


James Antill
Last modified: Tue May 29 19:35:38 EDT 2007