RFC 9110 HTTP Semantics - TRACE

1] TRACE
trace는 요청 메시지의 원격 application-level의 loop-back을 요청한다.
요청의 최종 수신자(final recipient)는 민감한 데이터를 포함한 필드를 제외하고 수신한 메시지를 200(OK) 응답의 내용으로 클라이언트에 다시 반영해야 합니다.(should)
message/http 형식은 이를 수행하기 위한 한 가지 방법이다.
최종 수신자는 Origin Server이거나 요청에서 Max-Forwards 값이 0인 첫 번째 서버이다.
Max-Forwards
프록시가 요청을 전달하는 횟수를 제한하는 메커니즘을 제공
클라이언트는 응답에 의해 공개될 수 있는 민감한 데이터가 포함된 TRACE 요청의 필드를 생성해서는 안 된다.(must not)
예를 들어, user agent가 저장된 user credentials이나 Cookie를 TRACE 요청으로 전송하면 안된다.
요청의 최종 수신자는 응답 콘텐츠를 생성할 때 민감한 데이터를 포함할 가능성이 있는 모든 요청 필드를 제외해야 한다(should)
TRACE를 사용하면 client가 request chain의 다른 쪽 끝에서 수신되는 내용(request chain의 마지막 단계에 있는 서버가 수신하는 메시지)을 확인하고 해당 데이터를 테스트 또는 진단 정보로 사용할 수 있다.
즉, client는 자신이 보낸 요청 메시지가 서버에 어떻게 도착하는지 확인할 수 있다.
특히 Via Header field의 값은 request chain의 추적 역할을 하므로 중요하다.
Max-Forwards header field를 사용하면 client가 request chain의 길이를 제한할 수 있으므로 무한 루프에서 메시지를 전달하는 chain of proxies를 테스트하는 데 유용하다.
클라이언트는 TRACE 요청으로 content(body)를 전송해서는 안 된다.(must not)
TRACE 메서드에 대한 응답은 캐시할 수 없다.
Subscribe to my newsletter
Read articles from Jong-Dae Park directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
