Re: Working Group Last Call: Structured Headers for HTTP

Julian Reschke <julian.reschke@gmx.de> Mon, 24 February 2020 09:27 UTC

Return-Path: <ietf-http-wg-request+bounce-httpbisa-archive-bis2juki=lists.ie@listhub.w3.org>
X-Original-To: ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com
Delivered-To: ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 4A1463A09A7 for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Mon, 24 Feb 2020 01:27:25 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.651
X-Spam-Level:
X-Spam-Status: No, score=-2.651 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, MAILING_LIST_MULTI=-1, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=gmx.net
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 3nMzBTtrIIMU for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Mon, 24 Feb 2020 01:27:23 -0800 (PST)
Received: from lyra.w3.org (lyra.w3.org [128.30.52.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 735013A09A4 for <httpbisa-archive-bis2Juki@lists.ietf.org>; Mon, 24 Feb 2020 01:27:23 -0800 (PST)
Received: from lists by lyra.w3.org with local (Exim 4.92) (envelope-from <ietf-http-wg-request@listhub.w3.org>) id 1j69yG-000461-V6 for ietf-http-wg-dist@listhub.w3.org; Mon, 24 Feb 2020 09:24:13 +0000
Resent-Date: Mon, 24 Feb 2020 09:24:12 +0000
Resent-Message-Id: <E1j69yG-000461-V6@lyra.w3.org>
Received: from titan.w3.org ([128.30.52.76]) by lyra.w3.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from <julian.reschke@gmx.de>) id 1j69yA-00044T-1l for ietf-http-wg@listhub.w3.org; Mon, 24 Feb 2020 09:24:06 +0000
Received: from mout.gmx.net ([212.227.15.18]) by titan.w3.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from <julian.reschke@gmx.de>) id 1j69y7-0003te-Kz for ietf-http-wg@w3.org; Mon, 24 Feb 2020 09:24:05 +0000
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1582536225; bh=nf0lagn16VcOlWGpYFqV0U5Knz6k/vKOmHvQniZ20cE=; h=X-UI-Sender-Class:Subject:To:Cc:References:From:Date:In-Reply-To; b=RZGElpxaZlJ4oGx/D+JhUgFJr3HfV/xhHk3qDNoLkEP8gN2RUvO77phIrVITI2VnC Lz/jpRseL26ZvixuaDXbXu5427El88KIjulyEYj4cMO/k1Doox+jj2GcMdffIkvljs 6MEVKjjphY/ZrpX6NaCBnULD4eu3dIyo8S5Tu7LE=
X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c
Received: from [192.168.1.220] ([217.91.35.233]) by mail.gmx.com (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1M5wPh-1j37pi1vY3-007Ygt; Mon, 24 Feb 2020 10:23:45 +0100
To: Mark Nottingham <mnot@mnot.net>
Cc: Tommy Pauly <tpauly@apple.com>, HTTP Working Group <ietf-http-wg@w3.org>
References: <C295C393-9602-4D41-9071-30629605E349@apple.com> <1a733857-e621-2ace-ad9a-1e3d872acf25@gmx.de> <3B46D138-971F-4602-8E54-4EE903EA5F24@mnot.net>
From: Julian Reschke <julian.reschke@gmx.de>
Message-ID: <5b050bce-4740-4d48-60d5-3ee5678326a9@gmx.de>
Date: Mon, 24 Feb 2020 10:23:46 +0100
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.5.0
MIME-Version: 1.0
In-Reply-To: <3B46D138-971F-4602-8E54-4EE903EA5F24@mnot.net>
Content-Type: text/plain; charset="utf-8"; format="flowed"
Content-Language: en-US
Content-Transfer-Encoding: quoted-printable
X-Provags-ID: V03:K1:Kjw9g0DbGFoduNBDnQkLjoOcQMYbK+fX2yhv2eCgmTWLRR6n+/I 1iOOSgEhF+rkJu+/dZUTDPW1h9y0uSs3rWZ7LZOoZ24/RrhVtJ0/LpIUKZWZermI5qjzf7d 6UHTgNOW8uJq9oC8hSBIHFDYNZ6biuelYBpOcUMYWVOfvWg81saIOBc7jN1vcCX54HhaNCX +RzwCz9U6WTkFkb+ikn0Q==
X-UI-Out-Filterresults: notjunk:1;V03:K0:3hzNSPScRfo=:hv36IToEtXY00jkwOVl6Le dze2NvVZaaHqsfm1hixbJIbcAHH3dNnrld1++JdkPx8G7AgZJY3Wld8le/bxmg2MPnOwHk7u8 1/VcgTNgMJslEoJyHawdamgQOKmMHasCXv1J1tOoSGfgLofpC1AP/BMJqmdC2pdqCbbOj9vWu 3RoW3N992JiH271FSx8agsO208TRbHvnMau2pCVugKLlFAY+Dc3RPfi2G+GTLpnXmQmjgt3N4 p6LTN7X0bYgxL0ZlqiOjK1WTygsgUQKcvW6N+4MUIAP+DZCmkb3V7sjbdE4mHqiZqsMdzlyj6 H3+9uS1n13UtIQesAbzRbruuLOMA8HUvt49oVQGEhuEiB4hkVXV3VWfhr+i3NAVRTN/zPpNGC hW8kBgS+ivcbwhrvg38HtdrE/2Z/6qju2apJQkIrhvef3+eIR+HiHibzmCC/b9AUDLZxMlrRs MiqW99qC9HaewKgVTLS8gL185n2X2FRn0IFboVNSkhGdgExMKxW5iO5iDN78lYYAgNxFmdfch w7r6u2B1ql9YmDz3mOnfz+HEUrwazYSt5R6SvOgY23XUKBonPffbE/e8WWf+Cd3crMVJWQcdV VOPx25GWdIkQv2sxNW9EQIrKRAWczCRWb5IjkWdpDlOkb9MDuv4HxJuSrSuckHE1I8MBlDxOF bqm545gIbY7R2BuycDjsPpR2O9J8KaBUfiaTyH++WW56kKg6z5P+WIquXnaDjC3SfcRx+OwiJ LnnTsgv/xozLPagzMDZXfMgBejaE43GUqoIxQnmni5haZtBl8DDKauuXDpTTaSaKILzvPrZO9 YBG5YsNLSFuUMFcmTPXxfDVMlVL66s1ZfbMSVfVv7LICUwIY3SgbZshIZ6Tp9dt/kwApXPeBF ZohovpSQVgDFHRBCNGOTi4lycP+YEiISEVbu0Vo/6BXI+mHhMY0v8PNRKcp0HNzn/0desk+dU Vhw8Jq7EijTcP8gHVByigxyk3l0wyQxL7FsfWm1J3QBtup2hN6quySenA012fy9DgCdIiPd+H PaObaGELcW+lR578lVICvK20g044K6bOHfwBoy5XZdVPHrCW6dXjPxFNQ7fub5DUOgFkZMYND As6aZfFv+0ECZYNQZEx0XhwjNT7R8u0I5Ait9o4pOdu1cMUYMLG/WWLwID2A5aljxok2NuVLa WkEcFQEds/gHq0UR1K3ohjumO/UcYidOYz03nw8itofBk/0JbHE+pnmWJeRbfFNydxdo2lEt3 ml63/cGypAOvViZwZ
Received-SPF: pass client-ip=212.227.15.18; envelope-from=julian.reschke@gmx.de; helo=mout.gmx.net
X-W3C-Hub-Spam-Status: No, score=-8.6
X-W3C-Hub-Spam-Report: BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, W3C_AA=-1, W3C_IRA=-1, W3C_IRR=-3, W3C_WL=-1
X-W3C-Scan-Sig: titan.w3.org 1j69y7-0003te-Kz 644262c6f50915d979f4b756e3a65db1
X-Original-To: ietf-http-wg@w3.org
Subject: Re: Working Group Last Call: Structured Headers for HTTP
Archived-At: <https://www.w3.org/mid/5b050bce-4740-4d48-60d5-3ee5678326a9@gmx.de>
Resent-From: ietf-http-wg@w3.org
X-Mailing-List: <ietf-http-wg@w3.org> archive/latest/37379
X-Loop: ietf-http-wg@w3.org
Resent-Sender: ietf-http-wg-request@w3.org
Precedence: list
List-Id: <ietf-http-wg.w3.org>
List-Help: <https://www.w3.org/Mail/>
List-Post: <mailto:ietf-http-wg@w3.org>
List-Unsubscribe: <mailto:ietf-http-wg-request@w3.org?subject=unsubscribe>

On 24.02.2020 00:55, Mark Nottingham wrote:
> ...
>> That said, the title probably should also change from "Structured
>> Headers for HTTP" to something like "Structured Field Values for HTTP
>> Headers and Trailers".
>
> I'm not against that, although it's quite wordy. Anyone else have thoughts?

Or just "Structured Field Values for HTTP".

>> In the example spec text:
>>
>>> "fooUrl" contains a URI-reference (Section 4.1 of
>>> [RFC3986], Section 4.1). If its value is not a valid URI-reference,
>>> that URL MUST be ignored. If its value is a relative reference
>>> (Section 4.2 of [RFC3986]), it MUST be resolved (Section 5 of
>>> [RFC3986]) before being used.
>>
>> 1. remove ", Section 4.1"
>
> Done.
>
>> 2. use of "URL" comes as as surprise here, maybe just say "field value"
>
> The intent is to ignore the individual URL, not the entire field value.

Ack. But the mix of "URI-reference" and "URL" is just confusing.

> ... >> In Section 3.1.2:
>>
>> ABNF:
>>
>> parameter     = ";" *SP param-name [ "=" param-value ]
>>
>> Prose:
>>
>> "...parameters are separated from their item or inner-list and each
>> other by semicolons."
>>
>> So there's an unfortunate mismatch between the ABNF production
>> "parameter" (which already includes the ";") and the use of "parameter"
>> in the prose. Maybe worth addressing in the ABNF.
>
> Please take a look at
>    https://github.com/httpwg/http-extensions/commit/b4b8f4a73

LGTM, thanks.

>> In Section 3.2:
>>
>>> Members whose value is Boolean true MUST omit that value when serialised, unless it has parameters. For example, here both “b” and “c” are true, but “c”’s value is serialised because it has parameters:
>>>
>>> Example-DictHeader: a=?0, b, c=?1; foo=bar
>>
>> I guess this is needed in order to avoid ambiguities, but this outcome
>> is really a bit strange. Is there a summary of how we got to that
>> special case somewhere (github issue?)
>
> https://github.com/httpwg/http-extensions/issues/992

Hm, that refers to existing field values, which the spec says are out of
scope.

That said, I *do* agree that the value-less variant is nice for flags;
my question is why we ended up with special-casing this in parameters,
and also why we don't allow serialising with "true" value outside
parameters.

>> In Section 3.3:
>>
>>> An item is can be a integer (Section 3.3.1), decimal (Section 3.3.2), string (Section 3.3.3), token (Section 3.3.4), byte sequence (Section 3.3.5), or Boolean (Section 3.3.6).
>>
>> Please be consistent in upper/lowercasing...
>
> Boolean refers to a person's name; lowercasing it would be equivalent to saying that your review is reschkean, not Reschkean. Or are you suggesting we uppercase all of them (which might be reasonable, given the next comment)?

In that case I'd suggest uppercasing for consistency.

>> In Section 3.3.2:
>>
>>> Decimals are numbers with an integer and a fractional component. The Integer component has at most 12 digits; the fractional component has at most three digits.
>>
>> Same here.
>
> Uppercase is used to refer to the SH-type; lowercase is referring to mathematical concepts.

"Integer component" vs "fractional component".

 > ...

Best regards and thanks for the changes so far,

Julian