본문 바로가기
Computer Science/네트워크

[Network] HTTP의 GET과 POST비교

by JYHAN 2020. 4. 5.

 

GET과 POST는 둘 다 HTTP 프로토콜을 이용해서 서버에 무언가를 요청할 때 사용하는 방식입니다.

하지만 특징을 제대로 이해하고 목적에 맞게 알맞은 용도로 사용해야 합니다.


  • GET

GET 방식은 요청하는 데이터가 HTTP Request MessageHeader 부분의 url에 담겨서 전송됩니다.

그렇기 때문에 url 상에 ? 뒤에 데이터가 붙어 request를 보내게 되는 것입니다.

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

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

  • POST

POST 방식의 request는 HTTP RequestBody 부분에 데이터가 담겨서 전송됩니다.

그렇기 때문에 바이너리 데이터를 요청하는 경우 POST 방식으로 보내야 하는 것처럼 데이터의 크기가 GET 방식보다 크고 보안면에서 낫습니다.(하지만 보안적인 측면에서 암호화를 하지 않는 이상 비슷하다고 볼 수 있습니다)

 

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

우선 GET은 가져오는 것입니다. 서버에서 어떤 데이터를 가져와서 보여준다거나 하는 용도이지 서버의 값이나 상태 등을 변경하지 않습니다. SELECT 적인 성향을 갖고 있다고 볼 수 있는 것입니다. 반면에 POST는 서버의 값이나 상태를 변경하기 위해서 또는 추가하기 위해서 사용됩니다.

 

부수적인 차이점을 좀 더 살펴보자면 GET방식의 요청은 브라우저에서 Caching 할 수 있습니다. 때문에 POST 방식으로 요청해야 할 것을 보내는 데이터의 크기가 작고 보안적인 문제가 없다는 이유로 GET 방식으로 요청한다면 기존에 caching 되었던 데이터가 응답될 가능성이 존재합니다. 때문에 목적에 맞는 기술을 사용해야 하는 것입니다.

 

 

HTTP Request Message

데이터의 크기

보안

서버의 값 또는 상태 변경

GET

Header

제한적

취약

불가능

POST

Body

GET보다 크다

상대적으로 낫다

가능

 

 

 


https://github.com/JaeYeopHan/Interview_Question_for_Beginner

위 링크에서 공부한 내용을 복습하기 위해 옮겨적은 것입니다.

'Computer Science > 네트워크' 카테고리의 다른 글

[Network] OSI 7계층  (0) 2020.10.28
[Network] HTTP & HTTPS  (0) 2020.09.24
[Network] TCP와 UDP 비교  (0) 2020.04.15
[Network] TCP 3-way Handshake  (0) 2020.04.06

댓글