당신의 API가 뒤에서 어떻게 작동하는지 궁금해본 적이 있나요? API가 올바른 데이터를 전송하고 수신하고 있는지, 아니면 중간에서 수정되고 있는지 어떻게 알 수 있을까요? 그럴 때 HTTP TRACE 메소드가 유용합니다. HTTP TRACE 메소드는 대상 리소스에 도달하는 경로에서 메시지 루프백 테스트를 수행하는 특수한 유형의 HTTP 요청입니다. 이 메소드를 사용하면 최종 수신자가 수신한 정확한 메시지를 볼 수 있으며, 쿠키나 자격 증명과 같은 민감한 데이터는 제외됩니다.
이번 블로그 포스팅에서는 프로처럼 API를 디버깅하기 위해 HTTP TRACE 메소드를 사용하는 방법을 보여드리겠습니다. HTTP TRACE 메소드가 무엇인지, 작동 방식, 그리고 제공하는 이점에 대해 설명할 것입니다. 또한 Apidog를 사용하는 방법도 보여드리겠습니다.
HTTP TRACE 메소드란 무엇인가요?
HTTP TRACE 메소드는 RFC 2616 사양에서 정의된 표준 HTTP 메소드 중 하나입니다. 이 메소드는 대상 리소스에 도달하는 경로에서 메시지 루프백 테스트를 수행하여 유용한 디버깅 메커니즘을 제공합니다. 요청의 최종 수신자는 민감한 데이터를 포함할 수 있는 필드를 제외한 수신된 메시지를 클라이언트에 200 (OK) 응답의 메시지 본문으로 반영해야 합니다. 최종 수신자는 원본 서버이거나 요청에서 Max-Forwards 값이 0인 첫 번째 서버입니다.
HTTP TRACE 메소드의 문법은 다음과 같습니다:
TRACE /path HTTP/1.1
Host: example.com
요청에는 본문이 없으며, 경로는 대상 리소스의 URI입니다. 요청은 요청을 전달할 수 있는 최대 중간자 수를 나타내는 Max-Forwards 헤더를 포함할 수도 있습니다. Max-Forwards 값이 0이면 요청은 전달되어서는 안 되며, 응답은 이를 수신한 첫 번째 서버에 의해 생성되어야 합니다. Max-Forwards 값이 지정되지 않으면 요청은 무기한 전달될 수 있으며, 원본 서버 또는 HTTP TRACE 메소드를 지원하지 않는 중간자에 도달할 때까지 계속됩니다.
HTTP TRACE 요청에 대한 응답은 200 (OK) 상태 코드와 message/HTTP 콘텐츠 유형을 가져야 합니다. 응답 본문은 최종 수신자가 수신한 정확한 메시지를 포함해야 하며, 민감한 데이터는 제외되어야 합니다. 응답에는 요청을 처리한 중간자를 나타내는 Via 헤더도 포함될 수 있습니다. Via 헤더는 프로토콜 이름, 프로토콜 버전 및 중간자의 식별자를 포함하는 하나 이상의 항목을 가져야 합니다. 예를 들어:
HTTP/1.1 200 OK
Content-Type: message/http
Via: 1.1 proxy1.example.com, 1.1 proxy2.example.com
TRACE /path HTTP/1.1
Host: example.com
응답은 요청이 최종 수신자에 도달하기 전에 두 개의 프록시인 proxy1.example.com과 proxy2.example.com에 의해 전달되었음을 보여줍니다. 응답 본문은 경로와 호스트 헤더를 포함한 원래 요청을 반영합니다.
HTTP TRACE 메소드는 어떻게 작동하나요?
HTTP TRACE 메소드는 대상 리소스에 요청을 보내고 동일한 요청 메시지를 포함하는 응답을 기대함으로써 작동합니다. 이를 통해 클라이언트는 서버가 수신한 정확한 메시지를 확인하고, 중간에서 수정되었거나 오류가 있었는지를 체크할 수 있습니다.
HTTP TRACE 메소드는 API 동작의 다양한 측면을 디버깅하는 데 사용할 수 있습니다.
- API 요청 및 응답에 영향을 미칠 수 있는 프록시, 게이트웨이 또는 방화벽과 같은 중간자의 존재 및 정체. Via 헤더는 요청을 처리한 중간자와 그들의 프로토콜 버전을 드러낼 수 있습니다.
- API 요청 및 응답 헤더와 본문의 무결성과 유효성. 응답 본문은 서버가 수신한 정확한 메시지를 보여줄 수 있으며, 클라이언트는 이를 원래 요청과 비교하여 변경 사항이나 불일치를 확인할 수 있습니다.
- API 요청 및 응답의 성능과 반응 시간. 클라이언트는 요청을 전송하는 데 걸리는 시간과 응답을 수신하는 데 걸리는 시간을 측정하고 API 경로의 병목 현상이나 지연을 식별할 수 있습니다.
HTTP TRACE 메소드는 또한 API의 보안 및 준수 테스트에 사용할 수 있습니다. 예를 들어:
- API 요청 및 응답에 포함될 수 있는 쿠키, 자격 증명 또는 토큰과 같은 민감한 데이터를 보호하는 것. 서버는 민감한 데이터를 포함할 수 있는 필드를 반영해서는 안 되며, 클라이언트는 요청에 내용을 보내거나 민감한 데이터를 포함할 수 있는 필드를 생성해서는 안 됩니다.
- 서버와 중간자에 의해 HTTP TRACE 메소드에 대한 지원 및 시행. 서버와 중간자는 RFC 2616 사양을 준수해야 하며, 200 (OK) 상태 코드와 message/http 콘텐츠 유형으로 응답해야 합니다. 서버나 중간자가 HTTP TRACE 메소드를 지원하지 않으면 405 (Method Not Allowed) 상태 코드와 지원되는 메소드를 나열하는 Allow 헤더로 응답해야 합니다. 서버나 중간자가 HTTP TRACE 메소드를 허용하지 않으면 403 (Forbidden) 상태 코드로 응답해야 합니다.

HTTP TRACE 메소드의 이점은 무엇인가요?
HTTP TRACE 메소드는 API 개발자, 테스터 및 소비자에게 여러 가지 이점을 제공합니다.
- 추가 도구나 라이브러리를 요구하지 않고 API 디버깅을 위한 간단하고 표준적인 방법입니다. 대부분의 HTTP 서버와 클라이언트에서 지원되며, RFC 2616 사양을 따릅니다.
- 서버나 리소스의 상태를 수정하지 않으며, 부작용 없이 반복할 수 있는 안전하고 멱등한 방법입니다. 또한 캐시되지 않으며, 항상 API의 현재 상태를 반영합니다.
- 여러 측면을 디버깅할 수 있는 강력하고 다목적의 방법입니다. 중간자, 헤더, 본문, 성능, 지연, 보안 및 준수와 같은 다양한 API 동작을 디버깅하는 데 사용할 수 있습니다. 경로, 호스트, Max-Forwards 및 기타 헤더를 변경하여 다양한 시나리오와 사용 사례를 테스트할 수 있습니다.
HTTP TRACE 요청을 전송하고 분석하기 위해 Apidog를 사용하는 방법은 무엇인가요?
Apidog 는 API 설계, 디버깅, 개발, 목업 및 테스트를 위한 통합 플랫폼으로, 다양한 시스템 간의 데이터 동기화 문제를 해결하기 위해 Postman + Swagger + Mock + JMeter를 결합합니다. Apidog는 전체 API 생명 주기를 연결하는 완전한 도구 세트를 제공하여 R&D 팀이 API 설계 우선 개발을 위한 모범 사례를 구현하는 데 도움을 줍니다.
Apidog는 HTTP TRACE 요청 및 기타 HTTP 메소드를 전송하고 분석하는 편리하고 쉬운 방법을 제공합니다. Apidog를 사용하여 HTTP TRACE 요청을 전송하고 분석하려면 다음 단계를 따라야 합니다:
- 새 요청을 생성하거나 기존 요청을 열어 HTTP TRACE 요청을 전송하고 분석하고자 하는 곳에서 시작합니다.

- API 에디터에서 드롭다운 메뉴에서 TRACE 메소드를 선택하고 대상 리소스의 경로를 입력합니다. 필요한 경우 호스트와 Max-Forwards 헤더를 입력할 수도 있습니다.

- HTTP TRACE 요청을 대상 리소스로 전송하기 위해 전송 버튼을 클릭하고 응답을 기다립니다.

응답 패널에서 상태를 확인할 수 있습니다.
서버에서 HTTP TRACE 메소드를 활성화 또는 비활성화하는 방법은 무엇인가요?
서버 구성 및 보안 정책에 따라 서버에서 HTTP TRACE 메소드를 활성화 또는 비활성화할 수 있습니다. HTTP TRACE 메소드를 활성화하면 API를 더 쉽게 디버깅할 수 있지만 악의적인 행위자에게 악용될 수 있는 정보를 노출할 수 있습니다. HTTP TRACE 메소드를 비활성화하면 이러한 공격을 방지할 수 있지만 디버깅 기능이 제한됩니다.
HTTP TRACE 메소드를 활성화 또는 비활성화하는 과정은 서버의 유형 및 버전에 따라 다릅니다. 다음은 몇 가지 일반적인 서버에 대한 예입니다:
- Apache: httpd.conf 파일에서 TraceEnable 지시어를 사용하여 TRACE 메소드를 비활성화하거나 제한할 수 있습니다. 예를 들어, TRACE 메소드를 완전히 비활성화하려면 다음 줄을 추가할 수 있습니다:
TraceEnable off
TRACE 메소드를 로컬 서버로만 제한하려면 다음 줄을 추가할 수 있습니다:
TraceEnable extended
- Nginx: nginx.conf 파일에서 limit_except 지시어를 사용하여 TRACE 메소드를 비활성화하거나 제한할 수 있습니다. 예를 들어, TRACE 메소드를 완전히 비활성화하려면 다음 블록을 추가할 수 있습니다:
location / {
limit_except GET POST HEAD {
deny all;
}
}
TRACE 메소드를 로컬 서버로만 제한하려면 다음 블록을 추가할 수 있습니다:
location / {
limit_except GET POST HEAD TRACE {
deny all;
}
if ($request_method = TRACE) {
return 200;
}
}
결론
HTTP TRACE 메소드는 API를 디버깅하는 유용한 도구로, 대상 리소스에 도달하는 경로에서 메시지 루프백 테스트를 수행할 수 있습니다. 이를 통해 중간자의 존재와 정체, 헤더와 본문의 무결성 및 유효성, 요청과 응답의 성능과 지연, API의 보안 및 준수를 확인하는 데 도움이 됩니다.
HTTP TRACE 메소드를 사용하려면 대상 리소스에 요청을 보내고 동일한 요청 메시지를 반영하는 응답을 기대해야 하며, 민감한 데이터는 제외되어야 합니다. HTTP TRACE 요청을 전송하고 분석하기 위해 다양한 도구와 프레임워크를 사용할 수 있으며, Apidog는 HTTP TRACE 요청을 전송하고 분석하는 편리한 방법을 제공합니다.