HTTP 요청과 응답 GET/POST

2022. 2. 5. 01:01Spring 기초

AWS에 가입한 뒤 원격 프로그램 실행에 성공하였다(바로 어제)

 

프로토콜에 대해 공부하였는데,

프로토콜이란?

서로 간 통신을 위한 약속 규칙을 말한다. 주고 받을 데이터에 대한 형식을 정의한 것(마치 투수와 포수 사이의 signal)

 

HTTP 프로토콜은 1) 단순하고 읽기 쉽다(텍스트 기반)

2) 상태를 유지하지 않는다(클라이언트를 저장하지 않음)

3) 커스텀 헤더를 추가할 수 있어 확장이 가능하다

는 특징이 있다

 

같은 클라이언트가 재요청을 보내도 서버는 같은 클라이언트임을 구분할 수 없다.

이를 보완하기 위해 쿠키와 세션을 이용한다.

 

클라이언트가 브라우저의 URL로 응답 요청을 보내면, 브라우저는 header를 생성하여

서버에 전송한다. 서버는 이에대한 응답으로 응답header와 body(HTML)을 response한다.

 

서버가 보낸 응답 HTTP format

예시) 

HTTP/1.1 200 OK

Content-Length: 44

Content-Type: text/html

Date: Fri, 4 Feb 2022 19:03:38 GMT

 

<html>

 ....

</html>

 

첫 줄에는 상태코드가 담겨있으며, 그 아래로 header가 명시되어 있다. 이후 한 줄 띄고

body(HTML)을 전송한다.

 

서버가 응답하기 위해서는 먼저 사용자의 요청이 있어야 한다.

사용자의 요청 method에는 대표적으로 GET, POST가 있으며

GET은 단순히 리소스를 얻어올 때 사용한다(읽기 전용)

따라서 전송하는 body에는 아무 내용도 담겨있지 않다.

데이터를 보낼 때는 쿼리스트링으로 보낼 수 있으며(소용량), url에 데이터가

노출되므로 보안에 취약하다. 하지만 데이터 공유에 유리하다(ex. 카톡으로 쇼핑몰 제품을 공유하는 경우)

 

 

POST는 body에 서버측으로 전송할 data가 담겨있다(쓰기). 따라서 전송 데이터 크기의 제한이 없으며

보안에 유리하나 데이터 공유에는 불리하다(보안은 HTTP와 TLS가 결합한 HTTPS 하에서)

 

<POST request format>

POST /getYoil HTTP/1.1
Host: localhost:8080
Cache-Control: no-cache
Content-Type: application/x-www-form-urlencoded

year=2022&month=2&day=5          <-- body에 데이터가 담겨있음

 

 

'Spring 기초' 카테고리의 다른 글

Cookie & Session  (0) 2022.02.09
DataBinder(아주 간략)  (0) 2022.02.06
@ModelAttribute, @RequestParam  (0) 2022.02.06
WAS(Web Application Server)와 Tomcat  (0) 2022.02.05
Spring 공부 2일차  (0) 2022.02.04