Re: Grammar for User-Agent header

>> > The grammar for the User-Agent header currently reads like this:
>> > 
>> > >       User-Agent      = "User-Agent" ":" 1*( product )
>> > >
>> > >       product         = token ["/" product-version]
>> > >       product-version = 1*DIGIT "." 1*DIGIT
> ...
>> > 
>> Sounds fair - what about:
>> 	User-Agent      = "User-Agent" ":" 1*( product )
>> 	product         = token ["/" token]

I can live with 

        User-Agent      = "User-Agent" ":" 1*( product )
        product         = token ["/" product-version]
        product-version = token

Note, however, that token has a restricted set of allowed characters
as specified in the BNF.  The reason product-version is separate is
so that I can explicitly state what is not allowed in the version from
a semantic point-of-view.

> Yes, where token is any string of characters which doesn't require URL
> encoding *OR* any string of characters inside of quotes.  User-Agent
> should be required to be a unique identifier for a particular version
> of User-Agent.  The standard should be absolutely relaxed about the
> format of the identifer except that it should be allowed to inhibit
> proper parsing of subsequent headers.  Might include words to describe
> how to insure uniqueness?  Or leave it to follow the course of domain
> names.  Or register the unique portion of the ID, etc..

None of the above.  The HTTP protocol will assume that client authors
will want to give their products suitable product tokens.  Requiring a
registry will not work due to the overhead and market considerations.
However, it would be nice if W3C set up a voluntary registry.

> It should be recommended that a human be able to read the string and
> relate it to external version control parameters.  

Nope.  This string is explicitly not intended for human readability.

......Roy Fielding   ICS Grad Student, University of California, Irvine  USA

Received on Wednesday, 18 January 1995 02:49:43 UTC