관련 포스팅 : HTTP 프로토콜
GET과 POST 요청은 언제 발생할까요?
GET 요청
- 웹브라우저의 주소창에 주소를 입력한 후 엔터를 칠 때,
- 페이지에서 링크를 클릭했을 때,
- 입력폼의 method 속성이 get 일 때,
- AJAX에서 서버에 연결할 때 get으로 설정한 경우
POST 요청
- 입력폼의 method 속성이 post 일 때,
- AJAX에서 서버에 연결할 때 post으로 설정한 경우
HTTP GET, POST 요청 프로토콜의 차이점
HTTP GET 요청 프로토콜
- 서버에 보내는 데이터는 요청-URI 안에 포함되어 있다.
- 그래서 따로 message-body를 보낼 필요가 없다.
- 요청 URI 예:
/webapp/student/list.json?pageNo=2&pageSize=5
- 이 중 서버에 보내는 데이터:
?pageNo=2&pageSize=5
- 이 중 서버에 보내는 데이터:
HTTP POST 요청 프로토콜
- 서버에 보내는 데이터는 요청-URI 안에 포함되지 않고 따로 message-body 부분에 첨부된다.
GET과 POST 요청의 특징 및 단점
GET 요청의 특징
- 즐겨 찾기에 데이터와 URL을 함께 저장할 수 있어서 다시 요청하기 편하다.
- 손쉽게 다른 사람에게 전달할 수 있다.
- 용도: 데이터 조회 요청에 적합하다.
GET 요청의 단점
- 데이터가 타인에게 쉽게 노출될 수 있다.
- 로그인과 같은 보안 전송에는 사용하기 적합하지 않다.
- 바이너리 데이터를 전송할 수 없다. 단, 전송하려면 base64와 같은 ASCII 형식으로 변환해야 한다.
- 보통 Request-Line의 크기가 8KB나 16KB로 제한되어 있어서, 대량의 데이터를 보낼 수 없다.
POST 요청의 특징
- 보통 웹서버에서는 message-body 부분으로 전송되는 데이터의 경우 대량으로 전송 받는 것을 허락한다.
- 대용량 데이터를 첨부할 수 있다.
- 웹브라우저 주소창에 보이지 않는다.
- 멀티파트 방식을 결합하면 바이너리 데이터도 보낼 수 있다.
- 용도: 게시글, 파일업로드 등 대량 데이터 전송 시, 로그인 폼처럼 보안을 요구하는 데이터 전송 시.
POST 요청의 단점
- 즐겨 찾기에 추가할 때 데이터가 포함되지 않기 때문에 조회 용 URL을 저장할 수 없다.
- 특정 페이지의 링크 정보를 다른 사람에게 전달할 수 없다.