Case (in)sensitivity in (Non-)Compliance headers

Jeffrey Mogul <mogul@pa.dec.com> writes:

>14.ZZZ Compliance
>...
>       compliance-namespace = token
>...
>       "RFC"   Compliance is with an RFC, specified by an RFC number.
>               For example, "rfc=1945".
>
>       "HDR"   Compliance is with a named HTTP header.  For example,
>               "HDR=Authorization".  There is no IANA registry for
>               HTTP header names, but to avoid potential namespace
>               confusion, only those HTTP headers listed in an
>               IETF standards-track document should be used in
>               this namespace.

The examples imply that compliance-namespace is to be treated in a
case-insensitive manner, although that isn't stated anywhere.  I hate
to keep harping on this issue, but living in the mainframe world where
upper case tends to be the default for such things, I keep finding
examples of case-insensitive tokens being handled as if they were always
lower case (e.g., media types in HTTP Content-Type headers by at least
one of the Big Two browsers).

If the RFC is going to publish the initial contents of the Compliance
registry, we should include the BNF for those initial entries.  I
suggest something like the following:

   "RFC"   Compliance is with an RFC, specified by an RFC number.
           For example, "rfc=1945".

              compliance-RFC = "RFC" "=" RFC-number
              RFC-number = 1*DIGIT

           Leading zeroes are permitted and ignored in RFC-number (i.e.,
           comparisons are numeric, not string).  The only parameters
           allowed on compliance-RFC are COND and UNCOND.

   "HDR"   Compliance is with a named HTTP header.  For example,
           "HDR=Authorization".  There is no IANA registry for
           HTTP header names, but to avoid potential namespace
           confusion, only those HTTP headers listed in an
           IETF standards-track document should be used in
           this namespace.

              compliance-HDR = "HDR" "=" field-name

           field-name is treated in a case-insensitive manner.  The only
           parameters allowed on compliance-HDR are COND and UNCOND.

   "PEP"   Compliance is with a PEP-specified extension, identified
           using a quoted-string containing the PEP extension
           declaration.

              compliance-PEP = "PEP" "=" something-PEPpy ; ;-)

           ...

Ross Patterson
Sterling Software, Inc.
VM Software Division

Received on Wednesday, 30 July 1997 08:59:23 UTC