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 |