클라이언트는 인터넷 주소창에 URL을 입력하고 서버는 클라이언트의 요청에 응답을 하여 웹페이지를 보여주게 됩니다. 이때 클라이언트가 서버로 보내는 데이터를 HTTP 패킷이라 하며 HTTP 해킷은 Header 와 Body로 나눠집니다.
헤더에는 HTTP Method 방식, 클라이언트와 브라우저 , 접속하고자 하는 URL의 정보들이 담겨져 있고 Body 에는 보통 비어있는데 이 공간에 정보를 담아서 서버에 요청할 수 있습니다. 이 HTTP Method 중 2가지인 Get 과 Post 방식에 대해 포스팅 해보겠습니다.
1. Get방식
Post 방식은 클라이언트가 서버로 데이터를 전송해 리소스를 추가하거나 생성하기 위해 사용되는 Method 입니다. Post 요청시 HTTP패킷의 헤더에 Body의 콘텐츠 타입을 명시하는 Content-Type 헤더 필드도 가능합니다.
http://localhost:8080/login?id=admin&pw=123456
위처럼 URL이 끝났다는 물음표(?) 뒤에 쿼리 스트링(Key 와 Value)를 붙이고 HTTP 패킷의 헤더에 포함해서 서버에 데이터를 요청합니다. 그리고 캐싱이 가능하여 속도가 빠릅니다.
GET 방식 특징
- URL에 쿼리 스트링(data) 을 붙여서 서버에 전송
- 데이터를 Header에 포함하여 전송
- URL에 정보들이 그대로 노출되기 때문에 POST 방식보다 상대적으로 보안에 취약
- 캐싱이 가능
- POST 방식보다 상대적으로 전송 속도가 빠름
- 전송하는 데이터양에 한계가 있음 (브라우저마다 GET 요청 길이 제한)
- 브라우저 히스토리에 기록이 남음
캐싱(Caching)이란? 한번 접근 후 또 요청할 시 빠르게 접근하기위해 레지스터에 데이터를 저장하는 것
2. Post 방식
Post 방식은 클라이언트가 서버로 데이터를 전송해 리소스를 추가하거나 생성하기 위해 사용되는 Method 입니다. Post 요청시 HTTP패킷의 헤더에 Body의 콘텐츠 타입을 명시하는 Content-Type 헤더 필드를 포함하고 HTTP 패킷의 Body에는 데이터를 담아서 서버로 전송합니다.
http://localhost:3000/login
Post 방식은 Get방식과 다르게 데이터들이 URL에 표시되지 않고 HTTP 패킷 Body 에 담겨 서버로 데이터가 전송됩니다. 따라서 보내는 데이터의 양에 제한 없이 대용량 데이터를 전송할 때는 Post 방식이 적합합니다. 그리고 URL 에 데이터가 표시되지 않기 때문에 Get방식보다는 상대적으로 보안적으로 보이지만, Body의 데이터도 결국 브라우저 개발자도구와 같은 툴로 요청 내용을 확인할 수 있기 때문에 꼭 암호화를 해주어야 합니다. Post 방식의 경우 보통 서버의 값이나 상태를 변경하기 위해 사용되므로 글쓰기, 글 수정과 같은 작업에 적합합니다.
Post 방식 특징
- 데이터를 Body에 담아서 전송
- 요청 헤더의 Content-Type 에 콘텐츠 타입을 명시
- 데이터들이 URL에 노출되지 않기 때문에 GET 방식보다 상대적으로 보안적
- 데이터를 Body에 담기 때문에 데이터의 양에 제한 X
- URL에 데이터가 노출되지 않으므로 캐싱 불가
- 클라이언트에서 인코딩, 서버에서 디코딩
- 요청받는 시간제한 존재
- 브라우저 히스토리에 기록 X
'Network' 카테고리의 다른 글
쿠키와 세션의 차이 (1) | 2022.09.05 |
---|