HTTP 메소드 GET 과 POST 비교

reenact11·2024년 4월 18일

Network

목록 보기
1/4
post-thumbnail

HTTP Methods


  • GET
  • POST
  • PUT
  • HEAD
  • DELETE
  • PATCH
  • OPTIONS
  • CONNECT
  • TRACE

주로 쓰이는 2가지 HTTP 메소드는 GETPOST이다.
이 두 메소드간의 차이점에 대해서 알아보자.


GET VS POST

GET VS POST

GET과 POST는 서로 다른 URL로 클라이언트의 요청이 서버로 전송된다.


목적

  • GET : 정보를 요청하고 가져올 때 사용된다. 예를 들어, 브라우저에서 웹 페이지를 요청하거나
    검색 엔진에서 검색어를 서버에 전달할 때 사용된다.

  • POST : 사용자가 제출한 데이터를 서버로 보내고, 그 데이터를 처리하거나 저장할 때 사용된다.
    예를 들어, 회원가입 양식을 제출하거나 로그인 정보를 전송할 때 사용된다.

데이터 전송 방식

  • GET : 데이터는 URL의 일부로 전송된다. 즉, URL에 쿼리 문자열로 데이터가 추가된다.
    예를 들어, http://example.com/search?q=query 와 같이 URL에 데이터가 추가된다.

  • POST : 데이터는 HTTP 요청의 body에 포함된다. 따라서 사용자가 제출한 데이터는 URL에 노출되지 않고, HTTP 요청 body에 포함된다. 예를 들어, 사용자가 회원가입 양식을 작성하면 "username=johndoe&password=12345" 와 같이 body에 데이터가 포함된다.

데이터 크기 제한

  • GET : URL의 길이에 제한이 있다. 이는 브라우저와 서버가 URL의 길이를 허용하는 최대 크기를 설정하여 제한한다. 예를 들어, Internet Explorer의 경우 약 2048자로 제한하고 있다.

  • POST : HTTP 프로토콜에 명시된 제한은 없지만, 서버 또는 웹 애플리케이션에서 설정된 제한이 있을 수 있다. 일반적으로 POST 요청은 GET보다 큰 양의 데이터를 처리할 수 있다.

멱등성

  • GET : 멱등적이다. 동일한 GET 요청을 여러 번 보내더라도 서버 상태나 데이터에 변경을 가하지 않으며, 항상 동일한 응답을 받을 수 있다. 따라서 GET 요청은 멱등적인 특성을 가진다.

  • POST : 멱등적이지 않다. POST 요청은 서버의 상태나 데이터를 변경할 수 있으므로,
    동일한 POST 요청을 여러 번 보내더라도 서버의 상태가 변경될 수 있다.
    예를 들어, 같은 주문을 여러 번 제출하는 경우 주문이 중복으로 생성될 수 있다.
    따라서 POST 요청은 멱등적이지 않다.

보안

  • GET : URL에 데이터가 노출되므로 보안에 취약하다.
    민감한 정보(예: 비밀번호)를 전송하는 데 적합하지 않다.

  • POST : 데이터가 HTTP 요청의 본문에 포함되므로 GET보다는 보안적으로 더 안전하다.
    민감한 정보를 전송하는 데 적합하다.

캐싱

  • GET: 결과가 캐싱될 수 있다. 브라우저는 같은 GET 요청에 대한 응답을 캐시하여 네트워크 요청을 줄일 수 있다.

  • POST : 보통은 캐시되지 않는다. POST 요청은 보안상의 이유로 브라우저에 의해 캐시되지 않는다.

사용 사례

  • GET : 검색 결과 요청, 페이지 이동 등과 같은 데이터를 요청할 때 사용된다.
    예를 들어, 브라우저 주소창에 URL을 입력하여 페이지를 요청하는 경우에 사용한다.

  • POST : 로그인 정보 전송, 회원가입 등과 같은 데이터를 제출하고 업데이트할 때 사용된다.
    예를 들어, 로그인 양식을 작성하고 제출하는 경우에 사용한다.


출처 및 참고자료:
https://developer.mozilla.org/ko/docs/Web/HTTP/Methods/GET
https://developer.mozilla.org/ko/docs/Web/HTTP/Methods/POST
https://www.w3schools.com/tags/ref_httpmethods.asp
https://velog.io/@soopy368/web-Get%EA%B3%BC-Post%EC%9D%98-%EC%B0%A8%EC%9D%B4%EB%A5%BC-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90
https://chat.openai.com/

0개의 댓글