Method(메서드)

HTTP 메서드는 클라이언트가 서버에게 요청을 하기 위해 사용하는 방식으로, 요청의 종류를 나타내는 용도로 사용된다.

Safe Method

서버의 상태를 변경하지 않는 요청을 의미하며, 이러한 메사드로는 GET, HEAD, OPTIONS가 있다. 하지만 실제 결과는 애플리케이션을 개발한 웹 개발자에게 달려있기 때문에 Safe Method라고 해서 무조건 안전하다는 보장은 없다.

종류

GET

가장 흔히 쓰이는 메서드로, 주로 리소스를 요청하기 위해 사용한다.

GET과 동일하게 동작하지만, 서버는 응답으로 헤더만을 돌려주고 본문은 반환하지 않는다.

  • 리소스를 가져오지 않고도 응답 헤더를 확인해 내용 본문의 타입이나 크기를 알 수 있음

  • 응답의 상태 코드를 통해, 개체가 존재하는지 확인 가능

  • 헤더를 통해, 리소스가 변경되었는지 확인 가능

서버 개발자들은 GET 요청으로 얻는 것과 동일한 결과를 HEAD 요청으로 얻을 수 있도록 구현해야 한다.

PUT

리소스를 생성하거나 갱신하기 위해 사용하는 메서드

POST

서버에 입력 데이터를 전송하기 위해 설계된 메서드로, 주로 데이터 전송이나 파일 업로드에 사용된다.

TRACE

클라이언트가 요청을 하면 해당 요청은 여러 애플리케이션을 거쳐 서버에 도달하게 되는데, TRACE 메서드는 아래의 과정을 통해 자신의 요청이 서버에 도달했을 때 어떻게 전송되었는지 알려준다.

  1. TRACE 요청을 받은 목적지 서버에서 루프백(loopback) 진단을 시작하여 자신이 받은 요청 메시지를 본문에 넣어 TRACE 응답으로 되돌려줌

  2. 받은 클라이언트는 TRACE 응답을 확인하고, 자신이 보낸 요청 메시지가 서버에 도달했는지 확인할 수 있음

TRACE 요청은 주로 진단 및 디버깅을 목적으로 사용되는 메서드로, 클라이언트와 목적지 서버 사이에 있는 요청/응답 연쇄를 확인하기 위해 사용된다.

보안 문제

TRACE 메서드를 사용하여 요청하면 서버는 응답 본문에 요청 메시지를 그대로 넣어서 보내주기 때문에, 클라이언트가 보낸 요청 메시지를 확인할 수 있다. 이 때, 요청 메시지에는 쿠키나 인증 정보 등이 포함되어 있을 수 있기 때문에, 해당 정보가 노출될 수 있어 보안에 취약하다.

  • 요청

TRACE / HTTP.1.1
ImportantHeader: 5959
Cookie: ogu=59
  • 응답

HTTP/1.1 200 OK
Connection: Keep-Alive
...

TRACE / HTTP.1.1
ImportantHeader: 5959
Cookie: ogu=59

때문에 일반적으로 서버에서 해당 메서드를 비활성화한 경우가 많고, 실제 운영 환경에서는 거의 사용되지 않는다고 한다. 또한 최신 브라우저에서는 TRACE 요청을 막아놓은 경우가 많다.

OPTIONS

여러 가지 종류의 지원 범위에 대해 서버에게 물어보기 위해 사용하는 메서드로, 서버는 Allow 헤더에 지원하는 메서드를 나열하여 응답한다.

DELETE

리소스를 삭제하기 위해 사용하는 메서드로, 삭제가 수행 되는 것을 보장하지는 않는다.

그 외 확장 메서드

HTTP는 확장 가능한 프로토콜로 설계되어 있어 필요에 따라 새로운 메서드를 만들어 사용할 수 있다. 하지만 표준 메서드가 아니기 때문에 (호환성 문제로) 신중히 사용해야하며, 대부분의 경우 사용하지 않는 것이 좋다.

참고자료

Last updated