Re: Via Header Field (replaces Forwarded)

This message reflects my understanding of consensus on the Via header
field as a replacement for the Forwarded header field present in draft 01.

===================================================================

10.xx  Via

   The Via general-header field must be used by gateways and proxies to
   indicate the intermediate protocols and recipients between the user
   agent and the server on requests, and between the origin server and
   the client on responses. It is analogous to the "Received" field of
   RFC 822 [9] and is intended to be used for tracking message forwards,
   avoiding request loops, and identifying the protocol capabilities of
   all senders along the request/response chain.

      Via   =   "Via" ":" 1#( received-protocol received-by [ comment ] )

      received-protocol = [ protocol-name "/" ] protocol-version
      protocol-name     = token
      protocol-version  = token

      received-by       = ( host [ ":" port ] ) | pseudonym )
      pseudonym         = token

   The received-protocol indicates the protocol version of the message
   received by the server or client along each segment of the
   request/response chain.  The received-protocol version is appended to
   the Via field value when the message is forwarded so that information
   about the protocol capabilities of upstream applications remains
   visible to all recipients.

   The protocol-name is optional if and only if it would be "HTTP".  The
   received-by field is normally the host and optional port number of
   a recipient server or client that subsequently forwarded the message.
   However, if the real host is considered to be sensitive information,
   it may be replaced by a pseudonym.  If the port is not given, it may
   be assumed to be the default port of the received-protocol.

   Multiple Via field values represent each proxy or gateway that has
   forwarded the message.  Each recipient must append their information
   such that the end result is ordered according to the sequence of
   forwarding applications.

   Comments may be used in the Via header field to identify the software
   of the recipient proxy or gateway, analogous to the User-Agent and
   Server header fields.  However, all comments in the Via field are
   optional and may be removed by any recipient prior to forwarding the
   message.

   For example, a request message could be sent from an HTTP/1.0 user
   agent to an internal proxy code-named "fred", which uses HTTP/1.1
   to forward the request to a public proxy at nowhere.com, which
   completes the request by forwarding it to the origin server at
   www.ics.uci.edu.  The request received by www.ics.uci.edu would then
   have the following Via header field:

      Via: 1.0 fred, 1.1 nowhere.com (Apache/1.1)

   Proxies and gateways used as a portal through a network firewall
   should not, by default, forward the names and ports of hosts
   within the firewall region. This information should only be
   propagated if explicitly enabled. If not enabled, the received-by
   host of any host behind the firewall should be replaced by an
   appropriate pseudonym for that host.

   For organizations that have strong privacy requirements for hiding
   internal structures, a proxy may combine an ordered subsequence of
   Via header field entries with identical received-protocol values into
   a single such entry.  For example,

      Via: 1.0 ricky, 1.1 ethel, 1.1 fred, 1.0 lucy

   could be collapsed to

        Via: 1.0 ricky, 1.1 mertz, 1.0 lucy

   Applications should not combine multiple entries unless they are all
   under the same organizational control and the hosts have already been
   replaced by pseudoynms.  Applications must not combine entries which
   have different received-protocol values.

      Note: The Via header field replaces the Forwarded header field
      which was present in earlier drafts of this specification.

===================================================================
Plus these additional changes in context:

*** draft-ietf-http-v11-spec-01.txt	Mon Feb 12 16:37:14 1996
--- ttt	Mon Apr  1 20:36:56 1996
***************
*** 1491,1501 ****
         General-Header = Cache-Control            ; Section 10.8
                        | Connection               ; Section 10.9
                        | Date                     ; Section 10.17
-                       | Forwarded                ; Section 10.20
                        | Keep-Alive               ; Section 10.24
                        | MIME-Version             ; Section 10.28
                        | Pragma                   ; Section 10.29
                        | Upgrade                  ; Section 10.41
  
     General header field names can be extended reliably only in 
     combination with a change in the protocol version. However, new or 
--- 1491,1501 ----
         General-Header = Cache-Control            ; Section 10.8
                        | Connection               ; Section 10.9
                        | Date                     ; Section 10.17
                        | Keep-Alive               ; Section 10.24
                        | MIME-Version             ; Section 10.28
                        | Pragma                   ; Section 10.29
                        | Upgrade                  ; Section 10.41
+                       | Via                      ; Section 10.xx
  
     General header field names can be extended reliably only in 
     combination with a change in the protocol version. However, new or 
***************
*** 3636,3668 ****
  
- 10.20  Forwarded
- 
-    The Forwarded general-header field is to be used by gateways and 
-    proxies to indicate the intermediate steps between the user agent 
-    and the server on requests, and between the origin server and the 
-    client on responses. It is analogous to the "Received" field of RFC 
-    822 [9] and is intended to be used for tracing transport problems 
-    and avoiding request loops.
- 
-        Forwarded      = "Forwarded" ":" #( "by" URI [ "(" product ")" ]
-                         [ "for" FQDN ] )
- 
-        FQDN           = <Fully-Qualified Domain Name>
- 
-    For example, a message could be sent from a client on 
-    ptsun00.cern.ch to a server at www.ics.uci.edu port 80, via an 
-    intermediate HTTP proxy at info.cern.ch port 8000. The request 
-    received by the server at www.ics.uci.edu would then have the 
-    following Forwarded header field:
- 
-        Forwarded: by http://info.cern.ch:8000/ for ptsun00.cern.ch
- 
-    Multiple Forwarded header fields are allowed and should represent 
-    each proxy/gateway that has forwarded the message. It is strongly 
-    recommended that proxies/gateways used as a portal through a 
-    network firewall do not, by default, send out information about the 
-    internal hosts within the firewall region. This information should 
-    only be propagated if explicitly enabled. If not enabled, the for 
-    token and FQDN should not be included in the field value, and any 
-    Forwarded headers already present in the message (those added 
-    behind the firewall) should be removed.
- 
--- 3636,3637 ----
  
***************
*** 4060,4066 ****
  
     If the response is being forwarded through a proxy, the proxy 
     application must not add its data to the product list. Instead, it 
!    should include a Forwarded field (as described in Section 10.20).
  
         Note: Revealing the specific software version of the server 
         may allow the server machine to become more vulnerable to 
--- 4032,4038 ----
  
     If the response is being forwarded through a proxy, the proxy 
     application must not add its data to the product list. Instead, it 
!    should include a Via field (as described in Section 10.xx).
  
         Note: Revealing the specific software version of the server 
         may allow the server machine to become more vulnerable to 
***************
*** 4232,4237 ****
--- 4204,4213 ----
  
         User-Agent: CERN-LineMode/2.15 libwww/2.17b3
  
+ 10.xx  Via
+ 
+    [new section above]
+ 
  10.44  WWW-Authenticate
  
     The WWW-Authenticate response-header field must be included in 401 
***************
*** 4604,4610 ****
     information within the context of any given request. Therefore, 
     applications should supply as much control over this information as 
     possible to the provider of that information. Four header fields 
!    are worth special mention in this context: Server, Forwarded, 
!    Referer and From.
  
     Revealing the specific software version of the server may allow the 
--- 4580,4586 ----
     information within the context of any given request. Therefore, 
     applications should supply as much control over this information as 
     possible to the provider of that information. Four header fields 
!    are worth special mention in this context: Server, Via, Referer and
!    From.
  
     Revealing the specific software version of the server may allow the 
***************
*** 4615,4622 ****
     Proxies which serve as a portal through a network firewall should 
     take special precautions regarding the transfer of header 
     information that identifies the hosts behind the firewall. In 
!    particular, they should remove, or replace with sanitized versions, 
!    any Forwarded fields generated behind the firewall.
  
     The Referer field allows reading patterns to be studied and reverse 
     links drawn. Although it can be very useful, its power can be 
--- 4591,4598 ----
     Proxies which serve as a portal through a network firewall should 
     take special precautions regarding the transfer of header 
     information that identifies the hosts behind the firewall. In 
!    particular, they should replace any Via fields generated behind the
!    firewall with sanitized versions, as described in Section 10.xx.
  
     The Referer field allows reading patterns to be studied and reverse 
     links drawn. Although it can be very useful, its power can be 

=========================================================================

 ...Roy T. Fielding
    Department of Information & Computer Science    (fielding@ics.uci.edu)
    University of California, Irvine, CA 92717-3425    fax:+1(714)824-4056
    http://www.ics.uci.edu/~fielding/

Received on Monday, 1 April 1996 22:01:31 UTC