- From: Julian Reschke <julian.reschke@gmx.de>
- Date: Wed, 03 Mar 2010 14:05:52 +0100
- To: Yves Lafon <ylafon@w3.org>
- CC: Mark Nottingham <mnot@mnot.net>, HTTP Working Group <ietf-http-wg@w3.org>
On 03.03.2010 10:49, Yves Lafon wrote:
> On Wed, 3 Mar 2010, Mark Nottingham wrote:
>
>> This has been discussed on-list and in meetings sporadically, but I
>> don't think we've ever focused on it exclusively.
>>
>> <http://trac.tools.ietf.org/wg/httpbis/trac/ticket/147>
>>
>>
>> Current text at
>> <http://tools.ietf.org/html/draft-ietf-httpbis-p6-cache-08#section-2.6>:
>>
>>> The selecting request-headers from two requests are defined to match
>>> if and only if the selecting request-headers in the first request can
>>> be transformed to the selecting request-headers in the second request
>>> by adding or removing linear white space [[anchor8: [
>>> ref
>>> ]]] at places
>>> where this is allowed by the corresponding ABNF, and/or combining
>>> multiple message-header fields with the same field name following the
>>> rules about header fields in
>>> Section 3.2 of [Part1].
>>
>> Proposed replacement:
>>
>> The selecting request-headers from two requests are defined to match
>> if and only if those in the first request can be transformed to those
>> in the
>> second request by applying any of the following:
>> - adding or removing whitespace, where allowed in the headers' ABNF
>> - combining multiple message-header fields with the same field name (see
>> Section 3.2 of [Part1])
>> - canonicalising both headers' values in a way that is known to have
>> identical
>> semantics, according to the headers' specification (e.g., re-ordering
>> field values
>> when order is not significant; case-normalisation, where values are
>> defined to be
>> case-insensitive)
>
> Friendly amendment: s/Canonicalising/Normalizing/
This *almost* works for me:
Section 2.6 would become:
-- snip --
When a cache receives a request that can be satisfied by a stored
response that has a Vary header field (Section 3.5), it MUST NOT use
that response unless all of the selecting request-headers nominated
by the Vary header match in both the original request (i.e., that
associated with the stored response), and the presented request.
The selecting request-headers from two requests are defined to match
if and only if those in the first request can be transformed to those
in the second request by applying any of the following:
o adding or removing whitespace, where allowed in the header's
syntax
o combining multiple message-header fields with the same field name
(see Section 3.2 of [Part1])
o normalizing both header values in a way that is known to have
identical semantics, according to the header's specification
(e.g., re-ordering field values when order is not significant;
case-normalization, where values are defined to be case-
insensitive)
If a header field is absent from a request, it can only match another
request if it is also absent there.
A Vary header field-value of "*" always fails to match, and
subsequent requests to that resource can only be properly interpreted
by the origin server.
The stored response with matching selecting request-headers is known
as the selected response.
If no selected response is available, the cache MAY forward the
presented request to the origin server in a conditional request; see
Section 2.4.
-- snip --
Note:
If a header field is absent from a request, it can only match another
request if it is also absent there.
Is that still true? I don't think; maybe we can remove the sentence
completely?
I would also add this to the Changes-from-2616 section (A.2) as:
-- snip --
Clarify that matching request headers allows header-specific
normalization. (Section 2.6)
-- snip --
(proposed draft patch attached to the ticket, see
<http://trac.tools.ietf.org/wg/httpbis/trac/attachment/ticket/147/i147.diff>)
Best regards, Julian
Received on Wednesday, 3 March 2010 13:06:33 UTC