- From: Alexei Kosut <akosut@nueva.pvt.k12.ca.us>
- Date: Wed, 6 Dec 1995 12:34:11 -0800 (PST)
- To: http-wg%cuckoo.hpl.hp.com@hplb.hpl.hp.com
Hi...
Reading over draft-ietf-http-v11-spec-00.txt, which in general looks
rather good, I have become confused about a certain part. In section
10.40, regarding the Unless header, it says:
When a request containing an Unless header field is received, the
server must evaluate the expression defined by the listed
logic-bags (Section 3.11). If the expression evaluates to false,
then no change is made to the semantics of the request. If it
evaluates true and the request is not a conditional GET
(If-Modified-Since, Section 10.23) or a partial GET (Range,
Section 10.33), then the server must abort the request and respond
with the 412 (unless true) status code. If the request is a
conditional GET, then the server must disregard the
If-Modified-Since value and respond as it would for a normal GET.
Similarly, if the request is a partial GET, then the server must
disregard the Range value and respond as it would for a normal GET.
This handing of conditional GETs seems to me completely wrong. If I read
the above correctly, here's what happens:
* No If-Modified-Since, but an Unless:
- Unless true: 412 response
- Unless false: send the document
* If-Modified-Since, no Unless:
- Not modified since: 304 response
- Modified since: send the document
All well and good so far, but...
* If-Modified-Since, and an Unless:
- Unless true and not modified since: send document
- Unless false and not modified since: 304 response
- Unless true and modified since: send document
- Unless false and modified since: send document
The first two are backwards! The first one will send me the document, even
though it's matched all the paramters I told it to match. For example if I
said "Unless: {eq {Content-MD5 "whatever"}}, but also threw in an
If-Modified-Since, I'd get a 304 if the MD5 *didn't* match. In other
words, it's behaving more as an If: header than an Unless: header. This
seems rather contradictory. It seems to me the only change to Unless
semantics when an If-Modified-Since header is present should be to replace
the 412 with a 304 if it's found true, and add an {le {Modified-Since
"date"}} to the internal parsing of the Unless header.
It seems to me that more often then not, browsers will send Unless and
If-Modified-Since at the same time, to maintain compatibility with HTTP
1.0 servers. However, the current draft's wording on this is very oblique
and hard to interpret. The above is what I think it says, but I have to
admit I'm really not sure. Is it possible to get some clarification on
this point?
--/ Alexei Kosut <akosut@nueva.pvt.k12.ca.us> /--------/ Lefler on IRC
----------------------------/ <http://www.nueva.pvt.k12.ca.us/~akosut/>
The viewpoints expressed above are entirely false, and in no way
represent Alexei Kosut nor any other person or entity. /--------------
Received on Wednesday, 6 December 1995 12:37:52 UTC