Re: Last Call: <draft-ietf-httpbis-early-hints-03.txt> (An HTTP Status Code for Indicating Hints) to Experimental RFC

Julian Reschke <julian.reschke@gmx.de> Mon, 26 June 2017 10:36 UTC

Return-Path: <julian.reschke@gmx.de>
X-Original-To: ietf@ietfa.amsl.com
Delivered-To: ietf@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 60948129ADE; Mon, 26 Jun 2017 03:36:49 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.7
X-Spam-Level:
X-Spam-Status: No, score=-4.7 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-2.8, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id m0ZBS9j_2gZe; Mon, 26 Jun 2017 03:36:47 -0700 (PDT)
Received: from mout.gmx.net (mout.gmx.net [212.227.17.20]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id C697E129AD4; Mon, 26 Jun 2017 03:36:46 -0700 (PDT)
Received: from [192.168.178.20] ([93.217.84.68]) by mail.gmx.com (mrgmx103 [212.227.17.168]) with ESMTPSA (Nemesis) id 0MQih7-1dK7nn3T4P-00U4B3; Mon, 26 Jun 2017 12:36:39 +0200
Subject: Re: Last Call: <draft-ietf-httpbis-early-hints-03.txt> (An HTTP Status Code for Indicating Hints) to Experimental RFC
To: Kazuho Oku <kazuhooku@gmail.com>
Cc: ietf@ietf.org, httpbis-chairs@ietf.org, Mark Nottingham <mnot@mnot.net>, draft-ietf-httpbis-early-hints@ietf.org, HTTP Working Group <ietf-http-wg@w3.org>, alexey.melnikov@isode.com
References: <149806437201.15854.12299810594896460001.idtracker@ietfa.amsl.com> <dcdff226-e12d-bb83-982f-8253f46ae935@gmx.de> <CANatvzygaU9oiof3-5TqnWdxqXOGNyGqPvNhTnpPzYy391CzNw@mail.gmail.com>
From: Julian Reschke <julian.reschke@gmx.de>
Message-ID: <632d93e7-eab5-dcbe-e971-64e3b27ddb4e@gmx.de>
Date: Mon, 26 Jun 2017 12:36:36 +0200
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.2.1
MIME-Version: 1.0
In-Reply-To: <CANatvzygaU9oiof3-5TqnWdxqXOGNyGqPvNhTnpPzYy391CzNw@mail.gmail.com>
Content-Type: text/plain; charset="utf-8"; format="flowed"
Content-Language: en-US
Content-Transfer-Encoding: 7bit
X-Provags-ID: V03:K0:db1oQNtjqfgM+JXce198hnScnbE1ALTGbu1HRqP2LxFTRXrKGhf o6KNoSfwsmnt03HuFazMuT+Bb3X8LYMMBFssgHJzxrpk9MU4hKw3wbfwJo6A7FBPdPxAPGI Y4j4ffGwa92X2jVrd+hoLNhwfN7ePvxpjnWTrZk7FF6luFzwRMVAp1SSSR51oeIXe5awcgV zOGc2T16G5MMHfdBE6kow==
X-UI-Out-Filterresults: notjunk:1;V01:K0:vOBeS4zkrNc=:WNj9iVF3AfPySn6Jwdwan5 lR+sdr4H+EkctJtntZESV9oZaZLSnQslWfBU7DMywOhZ65gbSCRZfIi56ITsNxVpO33VM0lgr SAlHQT64NKpspP3iA5NVFvwDE/miW153Bojn7nVSwPoenxCexGcVSyvI4bvj346JyvNEjijvO E+vel9CY8ykfM9bKP+JteMJwZrYlrCrsR1XK8cFVqE5qxYgAWBHq33A1rCXVXPmOuTW2K9vhM FAjEoqJvcLt2VEQEW9k0UJ4a0/IxGnsMW5T6mAjLVR28Zj90purh4N3mGXtaWMHgLD1AdZc/t jHSeZy2SVlBfPwn1y/Vysd7LQzwQdeYSglue3pIKpEtk/6/5ZEn3mo/X9c1Axl1nyGOiRu9AQ x49uGIV6DHbbbrBZB+ehUopkgWUZU/0QfcLpsLXebz5H/uASkwdhZwkQcKA4t0IwvSy+Qc9Jm eFsT+dGpoEZwQ1kebxYyqWSwopyl3SrhFmUVnbcQwLOQv4awTXC0lJIj4+klpUDk2Ge4SB10U IMzYuPruZXfQorFbPInYh3J9B+g8YAChu2Vq6654YN7HzYRh9DhtmZXM6ZzUsqpZ0/efmXQek z5Oa5vfzLfZWTq824H6dT2+QN+tuwC3cXfg8YXgxv8aQzf5QJCRU2KyByoU25Y2+JwUXLot+o fuhzEWXjacAssSdEjn3x8TcV+TrMe2kFFEGIQfaz3CtWWI46OjNeoWkTmZaLxMWWxB/pVmv1L LlU+rT9gHZcuRzOFg5HTCQ6+4yEEItaYVkjAyOAXPultWvdLEF1qZw2tmwGeEtuGGcGygXl+q yiS3wOi
Archived-At: <https://mailarchive.ietf.org/arch/msg/ietf/xAmb7UWPnvGiYiWTXiQvENCnrhE>
X-BeenThere: ietf@ietf.org
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: IETF-Discussion <ietf.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/ietf>, <mailto:ietf-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/ietf/>
List-Post: <mailto:ietf@ietf.org>
List-Help: <mailto:ietf-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/ietf>, <mailto:ietf-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 26 Jun 2017 10:36:49 -0000

On 2017-06-26 04:39, Kazuho Oku wrote:
> ...
> 2017-06-25 19:11 GMT+09:00 Julian Reschke <julian.reschke@gmx.de>:
>> On 2017-06-21 18:59, The IESG wrote:
>>>
>>>
>>> The IESG has received a request from the Hypertext Transfer Protocol WG
>>> (httpbis) to consider the following document: - 'An HTTP Status Code for
>>> Indicating Hints'
>>>     <draft-ietf-httpbis-early-hints-03.txt> as Experimental RFC
>>> ...
>>
>>
>>
>> Here's my feedback...:
>>
>> 2.  103 Early Hints
>>
>>     ...
>>
>>     A server MUST NOT include Content-Length, Transfer-Encoding, or any
>>     hop-by-hop header fields ([RFC7230], Section 6.1) in a 103 (Early
>>     Hints) response.
>>
>> That's a bit weird here, because the requirements for C-L and T-E are
>> generic to 1xx, and already are stated in RFC 7230. The text above makes it
>> sound as if these are specific to 103, which they are not.
>>
>> For hop-by-hop, I'm not convinced that the requirement is needed here.
> 
> I agree that we do not need to talk about C-L and T-E here.
> 
> The reasons I added a clause prohibiting the use of hop-by-hop headers
> in an 103 response are as follows:
> * does not make sense for a response that attempts to send the
> metadata of a final response early
> * to avoid confusion caused by sending a hop-by-hop header in the 103 response
> 
> Without the restriction, a response like below would be valid, which
> IMO is confusing at least.
> 
> ```
> HTTP/1.1 103 Early Hints
> Connection: close
> Link: </style.css>; rel=preload
> 
> HTTP/1.1 200 OK
> Connection: close
> Link: </style.css>; rel=preload
> ...
> ```

Yes, but does that mean we need a normative requirement? Also, is it 
really obvious that no future hop-by-hop header field could be 
meaningful on a 103?

>>     ...
>>
>>     An intermediary MAY drop the informational response. (...)
>>
>> That seems to contradict a MUST-level requirement in RFC 7231
>> (https://www.greenbytes.de/tech/webdav/rfc7231.html#rfc.section.6.2.p.3)
> 
> The statement exists since sending 103 only makes sense when it is
> impossible to immediately send a final response.
> 
> For example, there is no need for a cache that is in possession of a
> freshly-cached final response to send a 103 that was sent from the
> origin before sending the final response. I also believe that most
> caching proxies that exist today do not cache informational responses,
> and that there is no need for us to require them to do so.
> 
> Considering the facts, one way to resolve the issue would be to adjust
> the statement to something like "An intermediary MAY omit the 103
> response when resending a cached response", and argue that re-sending
> a cached response is not an action of "forwarding," which is defined
> as a MUST in RFC 7231.

Sounds good to me.

> But wouldn't it be simpler to just have the "MAY drop" clause for any
> intermediary?

In that case, the spec would contradict RFC 7231, which is bad position 
to be in...

>>     The following example illustrates a typical message exchange that
>>     involves a 103 (Early Hints) response.
>>
>>     Client request:
>>
>>       GET / HTTP/1.1
>>       Host: example.com
>>
>> (maybe insert blank line do delimit the message)
>>
>>     Server response:
>>
>>       HTTP/1.1 103 Early Hints
>>       Link: </style.css>; rel=preload; as=style
>>       Link: </script.js>; rel=preload; as=script
>>
>>       HTTP/1.1 200 OK
>>       Date: Fri, 26 May 2017 10:02:11 GMT
>>       Content-Length: 1234
>>       Content-Type: text/html; charset=utf-8
>>       Link: </style.css>; rel=preload; as=style
>>       Link: </script.js>; rel=preload; as=script
>>
>>       <!doctype html>
>>       [... rest of the response body is ommitted from the example ...]
>>
>> The example suggests that early hints are repeated in the final response. Do
>> they have to, actually?
> 
> Yes. They need to, especially if caching is involved. 103 is an
> intermediary response and there is no guarantee (or a requirement) for
> a cache to retain the headers included only in the informational
> response.
> 
> In case of link rel=preload headers, a client can speculatively load
> the resources included in the headers while revalidating a
> stale-cached response, or a caching proxy can generate a 103 response
> from a stale-cached 200 response, while waiting for the origin to
> perform revalidation.

What I'm after is a clear statement whether they really need to be 
repeated, as normative language.

> ...

Best regards, Julian