- From: Roy T. Fielding <fielding@avron.ICS.UCI.EDU>
- Date: Tue, 02 Apr 1996 18:12:39 -0800
- To: http-wg%cuckoo.hpl.hp.com@hplb.hpl.hp.com
Here are the proposed changes to the TRACE method and operation.
It is a context diff of the changes necessary to complete the TRACE
method for HTTP/1.1.
This is actually an old topic (discussed last November) but this is
the first time that the changes have been put into real words.
.....Roy
===================================================================
*** draft-ietf-http-v11-spec-01.txt Mon Feb 12 16:37:14 1996
--- trace.txt Tue Apr 2 18:03:35 1996
***************
*** 1657,1660 ****
--- 1657,1661 ----
| Host ; Section 10.22
| If-Modified-Since ; Section 10.23
+ | Max-Forwards ; Section 10.yy
| Proxy-Authorization ; Section 10.31
| Range ; Section 10.33
***************
*** 2397,2409 ****
8.12 TRACE
! The TRACE method requests that the server identified by the
! Request-URI reflect whatever is received back to the client as the
! entity body of the response. In this way, the client can see what
! is being received at the other end of the request chain, and may
! use this data for testing or diagnostic information.
! If successful, the response should contain the entire, unedited
! request message in the entity body, with a Content-Type of
! "message/http", "application/http", or "text/plain". Responses to
! this method are not cachable.
--- 2398,2422 ----
8.12 TRACE
! The TRACE method is used to invoke a remote, application-layer
! loopback of the request message. The final recipient of the request
! should reflect the message received back to the client as the
! entity body of a 200 (OK) response. The final recipient is either
! the origin server or the first proxy or gateway to receive a
! Max-Forwards value of zero (0) in the request (see Section 10.yy).
! A TRACE request must not include an entity body and must include a
! Content-Length header field with a value of zero (0).
+ TRACE allows the client to see what is being received at the other
+ end of the request chain and use that data for testing or diagnostic
+ information. The value of the Via header field (Section 10.xx) is of
+ particular interest, since it acts as a trace of the request chain.
+ Use of the Max-Forwards header field allows the client to limit the
+ length of the request chain, which is useful for testing a chain of
+ proxies forwarding messages in an infinite loop.
+
+ If successful, the response should contain the entire request message
+ in the entity body, with a Content-Type of "message/http",
+ "application/http", or "text/plain". Responses to this method must
+ not be cached.
+
***************
*** 3891,3893 ****
--- 3904,3931 ----
+ 10.yy Max-Forwards
+
+ The Max-Forwards general-header field may be used with the TRACE
+ method (Section 8.12) to limit the number of times that a proxy or
+ gateway can forward the request to the next inbound server. This can
+ be useful when the client is attempting to trace a request chain
+ which appears to be failing or looping in mid-chain.
+
+ Max-Forwards = "Max-Forwards" ":" 1*DIGIT
+
+ The Max-Forwards value is a decimal integer indicating the remaining
+ number of times this request message may be forwarded.
+
+ Each proxy or gateway recipient of a TRACE request containing a
+ Max-Forwards header field should check and update its value prior to
+ forwarding the request. If the received value is zero (0), the
+ recipient should not forward the request; instead, it should respond
+ as the final recipient with a 200 response containing the received
+ request message as the response entity body (as described in
+ Section 8.12). If the received Max-Forwards value is greater than
+ zero, then the forwarded message should contain an updated
+ Max-Forwards field with a value decremented by one (1).
+
+ The Max-Forwards header field should be ignored for all other methods
+ defined by this specification and for any extension methods for which
+ it is not explicitly referred to as part of that method definition.
+
Received on Tuesday, 2 April 1996 18:20:17 UTC