Re: updated http 1.1 rfcs and hop-by-hop

Amos Jeffries <squid3@treenet.co.nz> Tue, 19 August 2014 05:41 UTC

Return-Path: <ietf-http-wg-request@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 (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 24CA41A87EF for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Mon, 18 Aug 2014 22:41:59 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -7.57
X-Spam-Level:
X-Spam-Status: No, score=-7.57 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_HI=-5, RP_MATCHES_RCVD=-0.668, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] autolearn=ham
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 hppcJ7RUCkWO for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Mon, 18 Aug 2014 22:41:55 -0700 (PDT)
Received: from frink.w3.org (frink.w3.org [128.30.52.56]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 3CEFE1A87F2 for <httpbisa-archive-bis2Juki@lists.ietf.org>; Mon, 18 Aug 2014 22:41:54 -0700 (PDT)
Received: from lists by frink.w3.org with local (Exim 4.72) (envelope-from <ietf-http-wg-request@listhub.w3.org>) id 1XJc88-0008Ng-29 for ietf-http-wg-dist@listhub.w3.org; Tue, 19 Aug 2014 05:38:48 +0000
Resent-Date: Tue, 19 Aug 2014 05:38:48 +0000
Resent-Message-Id: <E1XJc88-0008Ng-29@frink.w3.org>
Received: from maggie.w3.org ([128.30.52.39]) by frink.w3.org with esmtp (Exim 4.72) (envelope-from <squid3@treenet.co.nz>) id 1XJc7c-0008L4-Eo for ietf-http-wg@listhub.w3.org; Tue, 19 Aug 2014 05:38:16 +0000
Received: from 121-99-228-82.static.orcon.net.nz ([121.99.228.82] helo=treenet.co.nz) by maggie.w3.org with esmtp (Exim 4.72) (envelope-from <squid3@treenet.co.nz>) id 1XJc7b-0005F0-5U for ietf-http-wg@w3.org; Tue, 19 Aug 2014 05:38:16 +0000
Received: from [192.168.2.97] (unknown [203.184.52.78]) by treenet.co.nz (Postfix) with ESMTP id 5C7B6E6FCC for <ietf-http-wg@w3.org>; Tue, 19 Aug 2014 17:37:44 +1200 (NZST)
Message-ID: <53F2E29D.7070506@treenet.co.nz>
Date: Tue, 19 Aug 2014 17:37:33 +1200
From: Amos Jeffries <squid3@treenet.co.nz>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: ietf-http-wg@w3.org
References: <CAGT4ZFhOmN6N9zT0Z=edx6_kMUPczOc4zVNjQzDk5Bw3DFjtww@mail.gmail.com> <CAGT4ZFjt__Ct2n06gWJ5A2yLU0ZjTkSR19JG02PJ0W4SzRr=nQ@mail.gmail.com>
In-Reply-To: <CAGT4ZFjt__Ct2n06gWJ5A2yLU0ZjTkSR19JG02PJ0W4SzRr=nQ@mail.gmail.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Received-SPF: pass client-ip=121.99.228.82; envelope-from=squid3@treenet.co.nz; helo=treenet.co.nz
X-W3C-Hub-Spam-Status: No, score=-3.5
X-W3C-Hub-Spam-Report: AWL=-3.450, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, TVD_RCVD_IP=0.001
X-W3C-Scan-Sig: maggie.w3.org 1XJc7b-0005F0-5U 7e7750dbbeb4786c05a29c1a4f7a30ac
X-Original-To: ietf-http-wg@w3.org
Subject: Re: updated http 1.1 rfcs and hop-by-hop
Archived-At: <http://www.w3.org/mid/53F2E29D.7070506@treenet.co.nz>
Resent-From: ietf-http-wg@w3.org
X-Mailing-List: <ietf-http-wg@w3.org> archive/latest/26646
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>

On 18/08/2014 8:39 p.m., Martijn Faassen wrote:
> Hi there,
> 
> No answer to my question at all so far? Perhaps it's the wrong list?
> Any feedback would be appreciated!

There is no longer an implicit list of hop-by-hop headers.

If you are sending any header your proxy needs to comply with the sender
criteria for that header. The headers pointed out by RFC2616 are all
defined with a MUST on being added to Connection: header explicitly, or
were actually having hopX-to-hopY behaviour where X and Y may have any
number of intermediary hops between them.

You are free to code a default list from the header definitions in your
application. But its just a convenience to fix incorrect input (missing
Connection: entries).

Amos

> 
> Thank you!
> 
> Martijn
> 
> 
> On Mon, Aug 11, 2014 at 4:42 PM, Martijn Faassen <faassen@startifact.com> wrote:
>> Hi there,
>>
>> [I hope this question reaches the right mailing list]
>>
>> I'm trying to find the equivalent of RFC 2616, section 13.5.1 in the
>> new specs. This section defines those header fields considered
>> hop-by-hop, i.e.:
>>
>>       - Connection
>>       - Keep-Alive
>>       - Proxy-Authenticate
>>       - Proxy-Authorization
>>       - TE
>>       - Trailers
>>       - Transfer-Encoding
>>       - Upgrade
>>
>> I need such a list in order to implement a Python WSGI-based proxy.
>> See PEP 3333:
>>
>> http://legacy.python.org/dev/peps/pep-3333/#other-http-features
>>
>>   However, because WSGI servers and applications do not communicate
>> via HTTP, what
>>   RFC 2616 calls "hop-by-hop" headers do not apply to WSGI internal
>> communications.
>>   WSGI applications must not generate any "hop-by-hop" headers [4],
>> attempt to use
>>   HTTP features that would require them to generate such headers, or
>> rely on the content
>>   of any incoming "hop-by-hop" headers in the environ dictionary. WSGI
>> servers must
>>   handle any supported inbound "hop-by-hop" headers on their own, such
>> as by decoding
>>   any inbound Transfer-Encoding, including chunked encoding if applicable.
>>
>> So, a WSGI proxy has to remove any hop-by-hop headers from the
>> response of the host it is proxying, and not pass them along. WSGI has
>> its own iterator based mechanism to support chunking, and a WSGI
>> server can then add the appropriate headers.
>>
>> In section 13.5.1 of RFC 2616 these hop-by-hop headers are specified,
>> but I can't find the equivalent in the newer RFCs.
>>
>> I do find section 6.1 in rfc7230, so I think this means that a
>> conforming server would list related headers in the Connection. But
>> what about Transfer-Encoding, for instance? A server that sends
>> "Connection: close" may not send Transfer-Encoding?
>>
>> It's certainly possible that I'm missing something. I haven't read the
>> complete specs yet. But any guidance would be appreciated.
>>
>> Regards,
>>
>> Martijn
>