Re: JSON headers

"Poul-Henning Kamp" <phk@phk.freebsd.dk> Thu, 14 July 2016 20:52 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 7FCE612D7B4 for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Thu, 14 Jul 2016 13:52:29 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -8.208
X-Spam-Level:
X-Spam-Status: No, score=-8.208 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HEADER_FROM_DIFFERENT_DOMAINS=0.001, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RP_MATCHES_RCVD=-1.287, SPF_HELO_PASS=-0.001, 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 K8f5NDxGaYGK for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Thu, 14 Jul 2016 13:52:28 -0700 (PDT)
Received: from frink.w3.org (frink.w3.org [128.30.52.56]) (using TLSv1.2 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id BE33212DC1C for <httpbisa-archive-bis2Juki@lists.ietf.org>; Thu, 14 Jul 2016 13:52:25 -0700 (PDT)
Received: from lists by frink.w3.org with local (Exim 4.80) (envelope-from <ietf-http-wg-request@listhub.w3.org>) id 1bNnY7-0004Wz-1S for ietf-http-wg-dist@listhub.w3.org; Thu, 14 Jul 2016 20:47:59 +0000
Resent-Date: Thu, 14 Jul 2016 20:47:59 +0000
Resent-Message-Id: <E1bNnY7-0004Wz-1S@frink.w3.org>
Received: from maggie.w3.org ([128.30.52.39]) by frink.w3.org with esmtps (TLS1.2:DHE_RSA_AES_128_CBC_SHA1:128) (Exim 4.80) (envelope-from <phk@phk.freebsd.dk>) id 1bNnY3-0004Tp-Kn for ietf-http-wg@listhub.w3.org; Thu, 14 Jul 2016 20:47:55 +0000
Received: from phk.freebsd.dk ([130.225.244.222]) by maggie.w3.org with esmtp (Exim 4.80) (envelope-from <phk@phk.freebsd.dk>) id 1bNnXt-0003Ae-J8 for ietf-http-wg@w3.org; Thu, 14 Jul 2016 20:47:54 +0000
Received: from critter.freebsd.dk (unknown [192.168.55.3]) by phk.freebsd.dk (Postfix) with ESMTP id DA6722737A; Thu, 14 Jul 2016 20:47:21 +0000 (UTC)
Received: from critter.freebsd.dk (localhost [127.0.0.1]) by critter.freebsd.dk (8.15.2/8.15.2) with ESMTP id u6EKlJvt084785; Thu, 14 Jul 2016 20:47:19 GMT (envelope-from phk@phk.freebsd.dk)
To: "Roy T. Fielding" <fielding@gbiv.com>
cc: Julian Reschke <julian.reschke@gmx.de>, Phil Hunt <phil.hunt@oracle.com>, HTTP Working Group <ietf-http-wg@w3.org>
In-reply-to: <35E62B8B-FAEF-4C61-AFD0-D07B90F237B7@gbiv.com>
From: Poul-Henning Kamp <phk@phk.freebsd.dk>
References: <74180.1468000149@critter.freebsd.dk> <A17D3EFD-A935-4971-BCF6-DC9D38302CAD@oracle.com> <564a72e8-b9d3-1f9c-5982-48f2b07272e5@greenbytes.de> <3924.1468137899@critter.freebsd.dk> <683f5f58-6046-d9fb-cc75-d0ab3890ce23@greenbytes.de> <4105.1468141779@critter.freebsd.dk> <5cdf0fa8-063c-7eaa-a9e3-fb6db7417254@gmx.de> <4213.1468143913@critter.freebsd.dk> <94e4a5c2-3465-fef3-6221-d9f4fcccb5fa@gmx.de> <4324.1468145426@critter.freebsd.dk> <35E62B8B-FAEF-4C61-AFD0-D07B90F237B7@gbiv.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-ID: <84783.1468529238.1@critter.freebsd.dk>
Content-Transfer-Encoding: quoted-printable
Date: Thu, 14 Jul 2016 20:47:19 +0000
Message-ID: <84784.1468529239@critter.freebsd.dk>
Received-SPF: none client-ip=130.225.244.222; envelope-from=phk@phk.freebsd.dk; helo=phk.freebsd.dk
X-W3C-Hub-Spam-Status: No, score=-6.0
X-W3C-Hub-Spam-Report: AWL=-0.803, BAYES_00=-1.9, RP_MATCHES_RCVD=-1.287, W3C_AA=-1, W3C_WL=-1
X-W3C-Scan-Sig: maggie.w3.org 1bNnXt-0003Ae-J8 892ed3919c2b305715daef383352dbac
X-Original-To: ietf-http-wg@w3.org
Subject: Re: JSON headers
Archived-At: <http://www.w3.org/mid/84784.1468529239@critter.freebsd.dk>
Resent-From: ietf-http-wg@w3.org
X-Mailing-List: <ietf-http-wg@w3.org> archive/latest/31968
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: <http://www.w3.org/Mail/>
List-Post: <mailto:ietf-http-wg@w3.org>
List-Unsubscribe: <mailto:ietf-http-wg-request@w3.org?subject=unsubscribe>

--------
In message <35E62B8B-FAEF-4C61-AFD0-D07B90F237B7@gbiv.com>, "Roy T. Fielding" w
rites:

>> It prevents streaming processing of headers, since you never know
>> when you have the full picture for a particular header, until you've
>> received them all and seen that there are no more instances.
>
>Which is the nature of header fields in general, since we don't know if
>a spoofing attempt is being made until we read all of the headers,
>including the ones not defined as a list.  In any case, we can certainly
>process them as a stream as long as we remember what has already been
>processed so that an appropriate action can be taken for duplicates.

There is a difference between "possible" and "allowed".

>The reason duplicate header fields exist is because email wanted them [...]

And that was probably a worthwhile concern back then.

Today email protocols should have no influence on the _future_ of HTTP.

>The semantics we defined for HTTP/1 allow for new field values to be
>processed and forwarded by a recipient without knowing its definition.

That will still hold true with my proposal, with the footnote that
we do not expect intermediaries to add (copies) of headers they do
not understand the semantics of.

>This is used in practice today by high-speed message forwarding with
>zero-copy constraints to append certain fields at the end of each
>header block.

None of which soundes like an obvious candidate for new structured
format headers to me ?

>In any case, this discussion has nothing to do with Julian's proposal, which
>is to define a common field syntax for HTTP/1.x field values that for some
>insane reason want to use JSON for field processing.

I think you must have misunderstood my proposal if you think so.

My proposal is that once we're done, the RFC should contain these
three parts.

	A) Here is how to put structured data into new HTTP headers
	   (Be it JSON or something saner).

		1) HTTP/1

		2) HTTP/2

	B) A header using this format can only appear at most once
	   in any HTTP message.  Split or repeat headers *using
	   this format* are not allowed.

	C) Here is how you write up a specification for such a header
	   in an RFC.  (ABNF/Schema/something)

That does not change the semantics of any currently defined
headers, nor of any headers not using the new format - JSON or
otherwise.

-- 
Poul-Henning Kamp       | UNIX since Zilog Zeus 3.20
phk@FreeBSD.ORG         | TCP/IP since RFC 956
FreeBSD committer       | BSD since 4.3-tahoe    
Never attribute to malice what can adequately be explained by incompetence.