[Java] HTML 폼(form) 요청에서 GET/POST만 가능한 이유

SEOP·2024년 10월 19일
0
post-thumbnail

1. HTML 폼(form) 요청에서 GET/POST만 가능한 이유

HTML의 form 태그는 웹 애플리케이션에서 사용자 입력을 서버로 전송하는 중요한 역할을 한다.
하지만 이 form 태그에서 사용할 수 있는 메소드는 GET과 POST 두 가지로 제한되어 있다.
입사 초기에 이것을 헷갈렸다.
컨트롤러 메소드에 정해둔 메소드와 동일하게 해줘야하는 줄 알았다.

FORM 요청에 GET/POST 메소드로 정해둔 이유에 대해서 정리해보고자 한다.

1-1. 웹 표준의 역사적 배경

  • 초기 웹 설계: HTML과 HTTP는 초기 웹 아키텍처에 맞춰 설계되었다. 그 당시 GET과 POST는 기본적인 데이터 전송 방식으로 자리 잡았으며, 이는 웹의 발전 초기 단계에서 필요했던 기능을 충족했다.
  • 정형화된 프로토콜: HTML 폼은 웹 표준에 기반하고 있으며, 이는 모든 브라우저와 서버 간의 호환성을 보장한다.

1-2. 데이터 전송 방식의 특성

  • GET 메소드:
    URL에 데이터를 쿼리 문자열로 포함하여 전송한다.
    주로 데이터를 조회하는 데 사용되며, 캐시 및 북마크 기능을 통해 사용자 경험을 향상시킨다.
    URL 길이 제한이 있어 대량의 데이터를 전송할 수 없다.
  • POST 메소드:
    요청 본문에 데이터를 포함하여 전송한다.
    데이터 생성이나 수정에 적합하며, 보안 측면에서도 상대적으로 안전하다.(데이터가 URL에 노출되지 않음)
    대량의 데이터를 전송할 수 있어 다양한 형태의 데이터를 처리하는 데 유리하다.

1-3. 보안 및 안전성

  • 위험 요소: PUT과 DELETE 메소드는 데이터 수정이나 삭제를 의미한다. 이러한 요청을 HTML 폼에서 직접 지원할 경우, 의도치 않은 데이터 손실이나 보안 문제가 발생할 수 있다.
  • CSRF 공격 방지: 사용자 입력을 통해 PUT이나 DELETE 요청이 발생할 경우, CSRF(사이트 간 요청 위조) 공격의 위험이 커진다. 이를 방지하기 위해 GET과 POST만 사용하도록 제한되어 있다.

1-4. 사용자 경험 및 편의성

  • 단순한 인터페이스: 웹 폼은 사용자가 쉽게 데이터를 입력하고 전송할 수 있도록 설계되었다. GET과 POST는 사용자에게 익숙한 방식이며, 대부분의 브라우저와 서버에서 잘 지원된다.
  • 복잡성 회피: 다양한 HTTP 메소드를 지원하는 대신, 간단한 두 가지 방식으로 사용자 경험을 최적화할 수 있다.

1-5. 현대적인 웹 개발 관행

  • AJAX와 Fetch API: RESTful API와 같은 현대적인 개발 환경에서는 JavaScript를 활용하여 비동기적으로 다양한 HTTP 메소드를 사용할 수 있다. 이를 통해 PUT, DELETE, PATCH 등의 메소드를 손쉽게 구현할 수 있다.
  • 서버 측 처리: POST 메소드를 사용하여 서버에서 PUT이나 DELETE 요청으로 변환하도록 처리하는 것도 일반적인 방법이다.

참고: https://mangkyu.tistory.com/218

profile
응애 나 애기 개발자

0개의 댓글