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 |