HTTP의 GET과 POST 비교

Kim Ji Eun·2022년 1월 12일
0

둘 다 HTTP 프로토콜을 이용해서 서버에 무엇인가를 요청할 때 사용하는 방식이다.

하지만 둘의 특징을 제대로 이해하여 기술의 목적에 맞게 알맞은 용도에 사용해야 한다.

GET

GET 방식은 요청하는 데이터가 HTTP Request Message의 Header 부분에 url이 담겨서 전송된다. 때문에 url 상에 ? 뒤에 데이터가 붙어 request를 보내게 되는 것이다.

이러한 방식은 url이라는 공간에 담겨가기 때문에 전송할 수 있는 데이터의 크기가 제한적이다.

또 보안이 필요한 데이터에 대해서는 데이터가 그대로 url에 노출되므로 GET 방식은 적절하지 않다. (ex. password)

POST

POST 방식의 request는 HTTP Request Message의 Body 부분에 데이터가 담겨서 전송된다. 때문에 바이너리 데이터를 요청하는 경우 POST 방식으로 보내야하는 것처럼 데이터 크기가 GET 방식보다 크고 보안면에서 낫다. (하지만 보안적인 측면에서 암호화를 하지 않는 이상 고만고만하다.)

GET과 POST 비교

그렇다면 이러한 특성을 이해한 뒤에 어디에 적용되는지를 알아봐야 그 차이를 극명하게 이해할 수 있다.

우선 GET은 가져오는 것이다. 서버에서 어떤 데이터를 가져와서 보여준다거나 하는 용도이지 서버의 값이나 상태 등을 변경하지 않는다. SELECT 적인 성향을 갖고 있다고 볼 수 있다.

반면에 POST는 서버의 값이나 상태를 변경하기 위해서 또는 추가하기 위해서 사용된다.

GET 방식의 요청은 브라우저에 의해 캐시되어 저장된다. 따라서 보안상 취약점이 존재하므로 중요한 데이터는 POST 방식을 사용하여 요청하는 것이 좋다.

반면에 POST 방식은 브라우저에 의해 캐시되지않으므로 브라우저 히스토리에도 남지않는다.

정리

GET

  • 정보 url에 담겨있음
  • 보안에 취약하다
  • 서버의 값 조회
  • 캐시될 수 있음 (보안상 취약)

POST

  • 정보 body에 담겨있음
  • 보안면에서 낫다
  • 서버의 값 or 상태를 변경 혹은 추가
  • 캐시되지 않는다

참고
http://www.tcpschool.com/jquery/jq_ajax_httpRequest
https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/Network

profile
Back-End Developer

0개의 댓글