CS/Network

[Network] HTTP의 GET과 POST 비교

ummchicken 2023. 1. 18. 13:01

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

 

 

사용자가 어떤 홈페이지로 이동하기 위해 URL을 브라우저 주소창에 작성하고, 

엔터를 누르면 페이지로 이동한다.

 

 

사용자는 단순히 URL(Uniform Resource Locator)를 입력하였을 뿐이지만, 

서버 내부에서는 클라이언트의 요청에 응답하기 위해서 처리를 해주어야 한다.

 

 

여기서 클라이언트가 서버로 요청을 보내는 방법인 HTTP Method에는 

크게 2가지 방식이 있는데, 

그것이 GET 방식과 POST 방식이다.

 

 

HTTP Method와 각각이 사용되는 경우

종류 기능
GET 데이터 조회
POST 요청 데이터 처리(보통 데이터 등록 사용)
PUT 데이터 변경 (해당 데이터가 없으면 생성)
PATCH 일부 데이터만 변경
DELETE 데이터 삭제

 

 

 


 

GET 방식

데이터를 가져와서 조회하기 위해 사용되는 방식.
데이터를 헤더에 추가하여 전송하는 방식이다.

URL에 데이터가 노출되므로, 보안적으로 중요한 데이터를 포함해서는 안 된다.

 

 

우리가 필요한 정보를 얻기 위해

도서관에서 책을 빌려 가져오는(GET) 상황과 유사하다.

 

 

 

 

GET 방식의 특징

  • URL 변수(데이터)를 포함시켜 요청한다. (url 상에 ? 뒤에 데이터가 붙어 request 를 보내게 됨)
  • 데이터를 Header(헤더)에 포함하여 전송한다. (Header 부분에 url 이 담겨서 전송)
  • URL에 데이터가 노출되어 보안에 취약하다.
  • 길이 제한이 있다. (url 이라는 공간에 담겨가기 때문)
  • 캐싱할 수 있다.
※ Cashing(캐싱)이란?
→ 캐싱이란 한번 접근 후, 또 요청할 시 빠르게 접근하기 위해 
레지스터에 데이터를 저장시켜 놓는 것이다.

 

 

 

 


 

POST 방식

데이터를 추가 또는 수정하기 위해 사용되는 방식.
데이터를 바디에 추가하여 전송한다.

완전히 안전하진 않지만, URL에 데이터가 노출되지 않아 GET보다는 안전함.

 

 

예를 들어, 우리가 어디에 서류를 제출하는 것은

우리에 대한 정보를 제출하여(POST) 추가하기 위함이다.

따라서 POST 방식은 데이터를 서버로 제출하여 추가 또는 수정하기 위해 사용하는 방식이다.

 

 

 

 

POST 방식의 특징

  • URL에 변수(데이터)를 노출하지 않고 요청한다.
  • 데이터를 Body(바디)에 포함시킨다.
  • URL에 데이터가 노출되지 않아서 기본 보안은 되어있다.
  • 데이터 길이에 제한이 없다.
  • 캐싱할 수 없다.

 

 

 

 


 

GET과 POST 방식의 차이점

- GET
클라이언트는 GET 요청시 URL와 Header에만 데이터를 담아서 전송할 수 있으므로
데이터 크기가 제한적이며, URL에 포함된 데이터는 사용자에게 그대로 노출된다.

GET 요청은 캐싱이 가능하므로 단순 조회이거나
데이터가 사용자에게 노출되어도 상관없다면 적극 활용하는 게 좋다.
- POST
데이터를 URL과 Header 그리고 Body에 담아서 전송할 수 있으므로
GET 방식보다 전송할 수 있는 데이터가 현저히 크다.

Body 데이터는 일반 사용자에게 노출되지 않으므로 
안정적인 데이터를 전송할 수 있다.

 

 

처리 방식 GET 방식 POST 방식
URL에 데이터 노출 여부 O X
URL 예시 http://localhost:8080/boardList?name=제목&contents=내용 http://localhost:8080/addBoard
데이터의 위치 Header(헤더) Body(바디)
캐싱 가능 여부 O X
멱등성 여부 O X

 

 

 

 


출처