Server

[HTTP] get post 개념과 차이점

효진인데요 2023. 8. 18. 23:28

 

 

0. GET 이란?

 

  • 클라이언트에서 서버로 어떠한 리소스로부터 정보를 요청하기 위해 사용되는 메서드
  • ex) 게시판의 게시글 조회

 

  • GET을 통한 요청은 URL 주소 끝에 파라미터로 포함되어 전송
  • 주소 끝 파라미터 부분을 쿼리 스트링 (query string)이라고 부름
  • URL 끝에 " ? "를 붙이고 그다음 변수명 1=값 1&변수명 2=값 2... 형식으로 이어 붙임
  • 이때, 서버에서는 name1 과 name2라는 파라미터 명으로,
    각각 value1 과 value2의 파라미터 값을 전달받음

 

 

www.example.com/show?name1=value1&name2=value2

 

 

 

 

이렇게 로컬호스트 url 맨 뒤에 물음표가  띵 나와서 뭐지? 했는데

이는 get 요청의 특징 중 데이터 전달할 때 생성되는 거라고 한다.

URL 뒤에 물음표를 붙여 key=value로 파라미터를 붙여 전달한다.

 

 

다른 url들에서도 종종 찾아볼 수 있었다.

이렇게 get 요청의 특징 하나를 직접 확인해 볼 수 있었다.

 

 

 

 

 

1. GET 특징

 

  • GET을 통해 서버에 리소스를 요청할 때 웹 캐시가 요청을 가로채 서버로부터 리소스를 다시 다운로드하는 대신 리소스의 복사본을 반환
  • HTTP 헤더에서 cache-control 헤더를 통해 캐시 옵션 지정 가능
  • 브라우저 히스토리에 기록이 남음

  • GET 요청은 길이 제한이 존재
    ▶ GET 요청의 길이 제한은 표준이 따로 있는 건 아니고 브라우저마다 제한이 다르다고 한다. 

  • GET 요청은 중요한 정보를 다루면 안 됨 ( 보안 )
    GET 요청은 파라미터에 다 노출되어 버리기 때문에 보안을 위해서는 중요 정보는 다루지 않는 것이  좋음

  • GET은 데이터를 요청할 때만 사용됨

 

 


 

 

 

2. POST 란?

 

 

출처: 구글이미지

 

 

 

  • 클라이언트에서 서버로 리소스를 생성하거나 업데이트하기 위해 데이터를 보낼 때 사용 되는 메서드
  • ex) 게시판에 게시글을 작성하는 작업 등을 할 때 사용
  • 전송할 데이터를 HTTP 메시지 body 부분에 담아서 서버로 전송
  • GET에서 URL의 파라미터로 보냈던 name1=value1&name2=value2 가 body에 담겨 보내진다 생각하면 됨

 

  • 데이터를 전송할 때 길이 제한이 따로 없음
  • 용량이 큰 데이터를 보낼 때 사용 가능
  • GET처럼 데이터가 외부적으로 드러나는 건 아니라서 보안이 필요한 부분에 많이 사용
    ( 하지만 데이터를 암호화하지 않으면 body의 데이터도 결국 볼 수 있는 건 동일 )
  • POST를 통한 데이터 전송은 보통 HTML form을 통해 서버로 전송

 

 

 

3. POST 특징

 

  • POST 요청은 캐시 되지 않음

  • 브라우저 히스토리에 남지 않음

  • 북마크 되지 않음

  • POST 요청은 데이터 길이에 제한이 없음

 

 

 


 

 

 

4.GET과 POST의 차이점 

 

 

앞서 살펴본 get과 post의 특징을 정리하며 차이를 살펴보면 아래 표와 같다.

 

 

특징 GET 방식 POST 방식
사용 목적 서버의 리소스에서 데이터를 요청할 때
(DB로 따지면 SELECT과 유사)
서버의 리소스를 새로 생성 / 업데이트 할 때
(DB로 따지면 CREATE와 유사)
캐시화 (cachec) 캐시될 수 있음 캐시되지 않음
브라우저 히스토리 히스토리에 쿼리 문자열이 기록됨 히스토리에 기록되지 않음
데이터 길이 데이터의 길이가 URL 주소 길이 이내로 제한
(익스플로러의 경우
URL 주소가 가질 수 있는 최대 길이 : 2083자,
이 중 순수 경로의 길이는 2048자 까지만 허용)
제한 X
데이터 타입 오로지 ASCII 문자 타입의 데이터만 전송 가능 제한 X
요청에 body 유무 URL 파라미터에 요청하는 데이터를 담아 보내기
때문에 HTTP 메세지에 body가 없음
body 에 데이터를 담아 보내기 때문에
당연히 HTTP 메시지에 body가 존재
보안성 데이터가 URL 주소에 포함되어 전송
▷ 누구나 볼 수 있어 보안에 매우 취약
브라우저 히스토리에도 기록되지 않고,
데이터가 따로 전송되기 때문에
GET 방식보다 보안성이 높음
멱등성 (idempotent) 멱등 O 멱등 X



 

 

멱등이란?
  • 멱등의 사전적 정의는 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질을 의미
  • GET은 리소스를 조회한다는 점에서 여러 번 요청하더라도 응답이 똑같을 것임
  • 반대로 POST는 리소스를 새로 생성하거나 업데이트할 때 사용되기 때문에 멱등이 아니라고 볼 수 있음

 

 

 

 

 

 

728x90

'Server' 카테고리의 다른 글

압축(ZIP) 폴더 오류 / 해결방법  (3) 2023.12.04
[Server]프로젝트 배포 진행  (0) 2023.09.11
[Web] 쿠키와 세션  (0) 2023.09.04
[서버] IP와 URL  (0) 2023.08.08
[서버] 서버/구축방법/클라우드서버  (0) 2023.08.07