TRACE: View the Client’s Message Through the Request Chain
The
TRACE method allows a programmer to see how the client’s
message is modified as it passes through a series of proxy servers.
The recipient of a TRACE method echoes the HTTP request headers back
to the client. When the TRACE method is used with the
Max-Forwards and
Via headers, a client can determine the chain of
intermediate proxy servers between the original client and web
server. The Max-Forwards request header specifies
the number of intermediate proxy servers allowed to pass the request.
Each proxy server decrements the Max-Forwards
value and appends its HTTP version number and hostname to the
Via header. A proxy server that receives a
Max-Forwards value of
returns the client’s HTTP headers as an entity-body with the
Content-type of message/http.
This feature resembles trace-route, a UNIX
program used to identify routers between two machines in an IP-based
network. HTTP clients do not send an entity-body when issuing a TRACE
request.
Figure 1.4 shows the progress of a TRACE
request. After the client makes the request, the first proxy server
receives the request, decrements the Max-Forwards
value by one, adds itself to a Via header, and
forwards it to the second proxy server. The second proxy server
receives the request, adds itself to the Via
header, and sends the request back, since
Max-Forwards is now
(zero).
![]() |
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access
