본문 바로가기

CS

GET과 POST의 차이점

GET 방식

서버로부터 정보를 요청할 때 사용되는 HTTP 메서드

 

1. 요청할 때 필요한 데이터를 Body에 담지 않고, 쿼리 스트링을 통해 전송한다.

  - 예: www.example.com/resources?name1=value1&name2=value2

  - 파라미터에 내용이 노출되기 때문에 민감한 데이터를 다룰 때 GET 요청을 사용하지 않는다.

 

2. 데이터가 담기는 곳 : HTTP 패킷 Header

 

3. GET 요청은 브라우저 히스토리에 남는다.

 

4. GET 요청은 길이 제한이 있다.

 

5. 불필요한 요청을 제한하기 위해 요청이 캐시될 수 있다.

  - js, css 이미지 같은 정적 컨텐츠는 데이터 양이 크고, 변경될 일이 적어서 반복해서 요청을 보낼 필요가 없다.

그래서 프론트 개발을 하다보면 정적 컨텐츠캐시되어 컨텐츠를 변경해도 내용이 바뀌지 않는 경우가 종종 발생함

이 때는 브라우저의 캐시를 지워주면 서버에 요청을 보내게 된다.

 

  - GET을 통해 서버에 리소스를 요청할 때 웹 캐시가 요청을 가로채서 서버로부터 리소스를 다시 다운로드 하는 대신 리소스의 복사본을 반환한다. HTTP 헤더에서 cache-Control헤더를 통해 캐시 옵션을 지정할 수 있다.

 

POST 방식

정보를 생성/업데이트하기 위해 서버에 데이터를 보내는 HTTP 메서드

 

1. GET과 달리 전송할 데이터를 HTTP 메시지의 Body에 담아서 전송

  - Body의 타입은 요청 헤더의 Content - Type 에서 설정해주어야 한다. 타입을 선언하지 않으면 서버는 내용이나 Url에 포함된 리소스의 확장자명으로 데이터 타입을 유추한다.

알수 없는 경우에는 application/octet-stream으로 요청을 처리한다.

 

  - 데이터가 Body로 전송되고 내용이 눈에 보이지 않아서 GET 요청보다 보안적인 면에서 더 안전하다고 생각할 수 있겠지만, 크롬 개발자 도구 등으로 확인할 수 있기 때문에 민감한 정보는 반드시 암호화가 필요하다.

 

2. 데이터가 담기는 곳 : HTTP 패킷 Body

 

3. POST요청은 캐시되지 않는다.

 

4. POST 요청은 브라우저 히스토리에 남지 않는다.

 

5. POST 요청은 데이터 길이에 제한이 없다.

 

GET과 POST의 차이점

 

1. 사용목적 : GET은 서버의 리소스에서 데이터를 요청 할 때, POST는 서버의 리소스를 새로 생성하거나 업데이트 할 때 사용된다.

 

2. 요청에 Body 유무 : GET은 URL 파라미터에 데이터를 담아 보내기 때문에 HTTP 메세지에 Body가 없다. POST는 Body에 데이터를 담아 보낸다.

 

3. 멱등성 : 멱등의 사전적 의미는 연산을 여러 번 적용 하더라도 결과가 달라지지 않는 성질을 뜻함.

GET은 리소스를 조회한다는 점에서 여러 번 요청하더라도 응답이 똑같을 것이다.

반대로 POST는 리소스를 생성하거나 변경할 때 사용되기 때문에 멱등이 아니라고 볼 수있다.

'CS' 카테고리의 다른 글

CORS(교차 출처 리소스 공유)  (0) 2025.03.11
HTTP 메서드  (0) 2025.03.10
HTTP와HTTPS  (0) 2025.03.08
HTTPS의 SSL HandShake  (0) 2025.03.07
TCP 3-way, 4-way handshake  (0) 2025.03.06