클라이언트가 HTTP 프로토콜을 이용해 서버로 요청을 보내는 방법인 HTTP Method에는 크게 GET 방식과 POST 방식이 있다.
이 둘에 대해 알아보자.
GET, POST
GET은 가져온다. POST는 수행한다.
GET은 서버에서 데이터를 조회하기 위해 사용하는 메서드이다.
POST는 서버에 데이터를 수정하거나 새로 추가하기 위해 사용하는 메서드이다.
둘의 가장 큰 차이점은 데이터를 전송하는 방식이다.
GET과 POST 메서드 둘 다 데이터를 서버로 보내야 하는데, GET은 Header에 POST는 Body에 데이터를 포함시켜 전송한다.
GET
GET은 요청을 전송할 때 필요한 데이터를 URL에 쿼리 스트링을 통해 전송한다.
쿼리 스트링이란 URL 주소 끝에 ? 뒤에 붙는 파리미터들을 말한다.
ex) https://example.com/login?id=abc&pw=1234
데이터를 URL에 포함하여 전송하기 때문에 즐겨찾기, 북마크 등에 추가해 간편하게 요청할 수 있으며, 캐시가 가능해 동일한 요청을 반복적으로 보내지 않아도 된다. 하지만 URL에 데이터가 그대로 노출되기 때문에 보안에 취약하며, URL에 전송할 수 있는 데이터 길이에 제한이 있기 때문에 데이터 길이 제한이 있다.(큰 용량의 데이터를 전송하기 어려움)
* 캐시(Chache) 더 알아보기
GET을 통해 서버에 리소스를 요청할 때 웹 캐시가 요청을 가로채 서버로부터 리소스를 다시 다운로드 하는 대신에 리소스의 복사본을 반환한다. HTTP 헤더에서 cache-control 헤더를 통해 캐시 옵션을 지정할 수 있다.
POST
반면 POST는 Body 내부에 데이터를 실어 서버로 전송된다.
데이터를 Body로 보내기 때문에 데이터 길이 제한이 없으며, 겉으로는 어떤 데이터가 전송되었는지 노출되지 않아 기본적인 보안이 이뤄진다. 하지만 GET보다 복잡하며, 캐시를 이용하지 않기 때문에 동일한 요청에 대해 반복해야 한다.
이때 POST로 전송되는 데이터는 보안에 완벽히 안전하다고 할 수 있을까?
아니다.
POST로 전달되는 데이터도 URL에 노출만 안될 뿐 개발자 도구만 켜서 Network 탭에서 클릭해보면 Body 데이터를 쉽게 확인할 수 있기 때문이다. 따라서 POST로 전달할 때 많은 데이터들을 암호화된 상태로 전송한다.
GET, POST 차이점 정리
GET | POST | |
데이터 전달 방식 | URL 쿼리 스트링 | Body |
목적 | 리소스 요청 | 리소스 생성, 수정 |
속도 | 빠름 | 보다 느림 |
캐시 | O | X |
브라우저 기록 | O | X |
데이터 길이 제한 | O | X |
멱등성 | O | X |
여기서 멱등성(idempotent)이란 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질을 의미한다.
- GET은 리소스를 조회한다는 점에서 여러 번 동일한 요청을 하더라도 서버의 데이터나 상태를 변경시키지 않아 응답이 동일하므로 멱등이다.
- POST는 리소스를 새로 생성하거나 수정할 때 사용하므로 서버에 변경이 생겨 멱등이 아니다.
결론
GET과 POST는 여러 차이가 있기 때문에 사용하려는 목적에 맞게 사용해야 한다.
GET 방식은 간단하고 캐시를 이용하여 빠르데 데이터를 조회하는 데 효과적이지만 보안에 취약하고 큰 용량의 데이터를 전송하기 어려운 단점이 있다.
반면, POST 방식은 보안성이 높고 큰 용량의 데이터를 전송할 수 있으며, 서버의 상태를 변경하는 작업에 적합하지만 캐시를 이용하지 않고 더 무거운 처리가 필요하다.
'💻 Computer Science > 네트워크' 카테고리의 다른 글
[Network] 인터넷 기술 (0) | 2023.03.03 |
---|---|
[Network] 인터넷 기초 (0) | 2023.02.22 |
[Network] 서비스와 프로토콜 (0) | 2023.02.15 |
[Network] 하드웨어 (0) | 2023.02.03 |
[Network] 광역 통신망 (2) | 2023.01.28 |
[Network] 근거리 통신망 (0) | 2023.01.17 |
[Network] OSI 참조 모델, TCP/IP (0) | 2023.01.06 |
[Network] 네트워크 개론 (0) | 2023.01.04 |