- From: Jeffrey Mogul <mogul@pa.dec.com>
- Date: Fri, 30 Jan 98 13:48:32 PST
- To: http-wg@cuckoo.hpl.hp.com
Roy Fielding writes:
Dean Gaudet has pointed out to me that Section 3.3.1 needs to include
a sentence to the effect of
HTTP-date is case sensitive and does not allow additional LWS
beyond that specifically included as SP in the grammar.
since "literal" defaults to case-insensitive.
I would phrase it as:
HTTP-date is case sensitive and does not allow additional LWS
beyond that specifically included as SP in the grammar.
HTTP/1.1 implementations that generate HTTP-date values MUST use
the correct case and LWS. However, HTTP/1.1 clients and servers
that parse HTTP-date value SHOULD accept values with extra LWS
and without regard to case.
I went back to the 500K-message proxy trace I made about 14 months
ago, and went looking for what the then-existing HTTP implementations
actually send.
I started by looking for all header lines containing the string "GMT",
and took these lines apart into the individual tokens. In this
group, I didn't find any lower-case month or day-of-the-week names,
although that doesn't prove that no implementations send "GMT"
dates with improper case; this survey only covers about 22K servers
and 7K clients.
I then looked for Date, Expires, and If-Modified-Since headers
(using a case-insensitive match for header names), and concentrated
on the ones that were not in GMT. Here I found some interesting
oddities:
Expires: {ts '1996-12-06 11:44:58'}
Expires: 01-Jan-70
Expires: Now
Date: FRIDAY, 12/06/96 13:29:11 EST
Date:Friday, 06-Dec-1996
Date: 1996/08/26
Date: Thu, 05 Dec 1996 18:08:25 +0000
Date: March 1979
Date: February 26, 1979
It's possible that some of these are actually from the bodies
of messages (sometimes my header-parser gets confused by interrupted
retrievals). However, it does appear that at least one implementation
is sending RFC-850 style dates with non-standard case:
Date: FRIDAY, 06-DEC-96 4:48:43 CST
Whether or not this should be rejected outright because of the "CST"
is another question.
(All of the If-Modified-Since headers in my trace seem to include
"GMT", although many are in RFC-850 format.)
Bottom line: there aren't many examples of implementations that
send otherwise legal dates but in the "wrong" case. However,
it seems reasonable to suggest that implementations not choke
on these.
By the way, I found a few other date-related oddities in HTTP
headers:
Satday, 30-Nov-96 19:59:25 GMT
miercoles, 14-ago-96 08:20:33 GMT
viernes, 06-dic-96 00:38:02 GMT
I can't imagine a date-parser that would really care that "Saturday" is
spelled "Satday" (instead of just ignoring the day-of-the-week
entirely). On the other hand, trying to get a parser to understand the
month-names in all possible different languages is probably
impossible. (I wonder if there is any three-letter string that
abbreviates two different month-names in two different lanuages?)
-Jeff
Received on Friday, 30 January 1998 13:50:49 UTC