-
[Java Network] Get 방식 vs Post 방식Java/Java Network 2022. 9. 4. 21:55
- 개요
- HTTP
- Get 방식
- Get 방식의 특징
- Post 방식
- Post 방식의 특징
- 개요
클라이언트는 인터넷 브라우저 주소창에 URL을 입력하고, 서버는 클라이언트의 요청에 응답하여 웹페이지를 보여준다.
이 때, 클라이언트가 서버로 보내는 데이터를 HTTP 패킷이라고 하며,
HTTP 패킷은 크게 Header(헤더)와 Body(바디)로 나누어진다.
Header(헤더)는 HTTP Method 방식, 클라이언트와 브라우저, 접속하고자 하는 URL 정보 등이 담겨져 있다.
Body(바디)는 보통 비어있으며, 정보를 담아서 서버에 요청할 수 있다.
클라이언트가 서버로 요청을 보내는 HTTP Method에는 여러 가지가 있는데,
그 중 두개인 Get 방식과 Post 방식에 대해 알아보자.
- HTTP
HTTP란, 웹 상에서 클라이언트와 서버 간에 데이터를 주고받을 수 있는 프로토콜을 말한다.
클라이언트가 HTTP 프로토콜을 통해서 서버에 요청을 보내면, 서버는 요청에 맞는 응답을 클라이언트에게 전송한다.
- Get 방식
Get 방식은 클라이언트가 서버로 데이터를 요청하기 위해 사용되는 Method이다.
Get 요청을 할 때에는 Body 부분은 비어있고, 헤더에 Body의 Content-Type 헤더 필드도 적지 않는다.
URL 뒤에 쿼리 스트링(Key, Value)를 붙이고, HTTP 패킷의 헤더에 포함해서 서버에 데이터를 요청한다.
http://localhost:3000/login?id=admin&pw=1234
URL의 "?" 뒤에는 쿼리 스트링으로 데이터를 표현하는데, 중요한 값들이 노출이 되기 때문에
실제 사이트에서 Get 방식을 이용하면 보안에 문제가 생기게 된다.
Get 방식은 브라우저마다 글자 수의 제한이 있기 때문에 간단한 조회와 같은 데이터 요청을 할 때 적합하다.
또한 캐싱이 가능하므로, 속도가 빠르다.
[ 캐싱 : 한번 접근 후 다시 요청할 시 빠르게 접근하기 위해 레지스터에 데이터를 저장시켜 놓음 ]
- Get 방식의 특징
- URL에 쿼리 스트링(데이터)을 붙여서 서버에 전송한다.
- 데이터를 Header(헤더)에 포함하여 전송한다.
- URL에 정보가 노출이 되기 때문에 Post 방식보다 보안이 취약하다.
- 캐싱이 가능하다.
- Post 방식보다 전송 속도가 빠르다.
- 전송하는 데이터양에 한계가 있다.
- 브라우저 히스토리에 기록이 남는다.
- Post 방식
Post 방식은 클라이언트가 서버로 데이터를 전송해 리소스를 추가하거나 생성하기 위해 사용되는 Method이다.
Post 요청 시, HTTP 패킷의 헤더에 Body의 Content-Type 헤더 필드를 포함하고,
HTTP 패킷의 Body에는 데이터를 담아서 서버로 전송한다.
http://localhost:3000/login
Post 방식은 Get 방식과 다르게 데이터들의 URL에 표시가 되지 않고 HTTP 패킷 Body에 담겨 서버로 데이터가 전송된다.
보내는 데이터의 양에 제한이 없어 대용량 데이터를 전송할 때는 Post 방식이 좋다.
또한 URL에 데이터가 표시되지 않기 때문에 Get 방식보다는 상대적으로 보안적이지만, 암호화를 꼭 해야한다.
Post 방식은 보통 서버의 값이나 상태를 변경하기 위해 사용, 글쓰기 및 글 수정 같은 작업에 적합하다.
- Post 방식의 특징
- 데이터를 Body에 담아서 전송한다.
- 요청 헤더의 Content-Type에 콘텐츠 타입을 명시한다.
- 데이터가 URL에 노출이 되지 않기 때문에 Get 방식보다 상대적으로 보안적이다.
- 데이터들을 Body에 담기 때문에 서버로 보내는 데이터의 양은 제한이 없다.
- URL에 데이터가 노출이 되지 않으므로 캐싱이 불가능하다.
- 요청받는 시간제한이 존재한다.
- 브라우저 히스토리에 기록이 남지 않는다.
참고 블로그 : https://cocoon1787.tistory.com/526
'Java > Java Network' 카테고리의 다른 글
[Java Network] OSI 7계층과 TCP/IP 4계층 (0) 2022.09.03