[Network] GET방식과 POST방식의 비교 및 차이점

Mubby·2022년 12월 2일
0

네트워크(5xx)

목록 보기
2/2
post-thumbnail

HTTP Method 중 클라이언트가 서버로 요청을 보내는 방식은 크게 두 가지로 GET 방식과 POST 방식이 있습니다.

이번 포스팅에서는 GET 방식과 POST 방식의 특징과 차이점을 알아보려 합니다.

* HTTP: 웹상에서 클라이언트와 서버 간에 데이터를 주고받을 수 있는 프로토콜

GET 방식이란

조회를 위해 서버에 데이터를 요청할 때 사용하는 방식입니다.

GET 요청의 경우 Body는 비어있고 쿼리스트링을 이은 URL을 HTTP 패킷 헤더를 통해 서버에 전송합니다.

http://localhost:3000/login?id=admin&pw=1234

쿼리스트링이란 URL의 ‘?’ 뒤에 이름과 값으로 쌍을 이루는 요청 파라미터를 뜻하는데 쿼리스트링을 통한 요청 시 이러한 이름과 값들이 노출되기 때문에 보안에 큰 결함이 생기게 됩니다.

또한 GET 방식의 경우 전송하는 데이터 양에 제한이 있어 간단한 요청을 할 때 적합합니다.

GET 방식은 캐싱이 가능해 속도가 빠릅니다. 변경될 일이 적은 정적컨텐츠 등에 캐싱을 사용하여 불필요한 요청을 방지할 수 있기 때문입니다.

GET 방식 특징

  • URL에 쿼리스트링을 붙여서 서버에 전송한다.
  • 데이터를 Header에 포함하여 전송한다.
  • URL에 정보들이 그대로 노출되기 때문에 보안에 취약하다.
  • 캐싱이 가능하다.
  • POST 방식보다 상대적으로 전송 속도가 빠르다.
  • 전송하는 데이터의 양에 한계가 있다.
  • 브라우저 히스토리에 기록이 남는다.

POST 방식이란

데이터를 서버로 전송하여 리소스를 추가 또는 수정하기 위해 사용하는 방식입니다.

POST 요청 시 HTTP 패킷 헤더에 Body의 콘텐츠 타입을 명시하는 헤더 필드를 포함하고 HTTP 패킷 Body에는 데이터를 담아서 서버로 전송합니다.

http://localhost:3000/login

Body는 길이 제한이 없기 때문에 대용량 데이터를 전송할 수 있습니다.

또한 당장 겉으로 데이터가 노출되지 않기 때문에 GET 방식보다는 보안성이 높은건 사실이지만, 이 또한 툴 등으로 내용 확인이 가능하기 때문에 민감한 데이터의 경우 암호화가 필요합니다.

POST 방식 특징

  • 데이터들을 URL뒤에 붙여서 서버로 보내는 것이 아닌 Body에 담아서 전송한다.
  • 요청 헤더의 Content-Type에 콘텐츠 타입을 명시한다.
  • 데이터들이 URL에 노출되지 않기 때문에 GET 방식보다 보안적이다.
  • 데이터들을 Body에 담기 때문에 서버로 보내는 데이터의 양에 제한이 없다.
  • URL에 데이터가 노출되지 않으므로 캐싱이 불가하다.
  • 클라이언트에서 인코딩, 서버에서 디코딩
  • 요청받는 시간 제한이 존재한다.
  • 브라우저 히스토리에 기록이 남지 않는다.

GET 방식과 POST 방식의 차이점

  • GET 방식은 서버의 리소스에서 데이터를 요청할 때 사용하고, POST 방식은 서버의 리소스를 새로 생성하거나 업데이트할 때 사용한다.

  • GET 방식은 URL 파라미터에 요청하는 데이터를 담아 보내기 때문에 HTTP 메시지에 body가 없다. POST 방식은 body 에 데이터를 담아 보낸다. 따라서 HTTP 메시지에 body가 존재한다.

  • GET 요청의 경우 여러 번 요청해도 응답이 같기 때문에 멱등이며, POST 요청은 리소스를 새로 생성하거나 업데이트하므로 서버에게 동일한 요청을 여러 번 전송해도 응답이다를 수 있기 때문에 멱등이 아니다.

* 멱등성이란 연산을 여러 번 하더라도 결과가 달라지지 않는 성질을 의미한다.

참고사이트:
HTTP GET,POST방식 차이
[Network] GET방식과 POST방식의 차이

0개의 댓글