Http method Post와 Get의 차이

songh·2025년 1월 10일
0

CS지식

목록 보기
35/35

Get


  • 서버에서 정보를 조회할 때 사용하는 HTTP 메서드다.
  • URL에 데이터를 포함해서 요청한다. 즉, ?이름과 값으로 요청 파라미터를 보내는 것을 쿼리 스트링이라고 한다. 만약 요청 파라미터가 여러개라면, &로 연결한다.
  • 데이터는 HTTP 헤더에 담겨서 전송된다.
  • URL에 데이터가 노출되서 보안에 취약하다.
  • 길이 제한이 있다.
  • GET 요청은 브라우저 기록에 남아서, 캐싱이 가능하다. 따라서 불필요한 요청을 제한할 수 있다.
    ▪️ 동일한 요청이 발생하면 서버로 보내지 않고 캐시된 데이터를 사용할 수 있다.
    ▪️ 멱등하다 = 여러 번 같은 요청을 보내도 동일한 응답이 돌아온다. 따라서 데이터를 조회할때만 GET을 사용하는 것이 좋다.
    ▪️ CSS, JS 같은 정적 컨텐츠는 데이터 양이 크고 변경될 일이 적어, 정적 컨텐츠는 캐시되는 것이다. 하지만, 정적 컨텐츠가 변경될 경우에도, 내용이 바뀌지 않는 경우가 종종 있는데, 그 이유는 브라우저 캐시가 남아있어서 그렇다. 따라서 캐시를 지워주면 서버에 요청을 보내서 정상적인 내용을 확인할 수 있다.
    ▪️ GET을 통해 서버에 정보를 요청할때, 웹 캐시가 요청을 가로채서 서버로부터 리소스를 다시 다운받는 대신, 리소스의 복사본을 반환한다. HTTP 헤더에서 cache-control를 통해 캐시 옵션을 지정할 수 있다.

(1) GET 요청에서 메세지 바디를 사용하지 않도록 권장하는 이유

  • 캐시 가능성이 있어서.
    ▪️ GET요청은 웹 브라우저에 의해 캐시된다. GET 요청을 간단하고 예측가능하게 유지하여, 캐시를 보다 쉽게 관리하고 검색할 수 있다.

  • 안전성의 이유로,
    ▪️ GET 요청은 안전하고 멱등해야한다. 서버에서 어떠한 데이터도 수정하지 않고 부작용이 없어야 함을 의미한다. 따라서 바디를 허용하지 않도록 해서 GET 요청이 안전하고 멱등하게 유지되도록 한다.

  • 보안성의 이유로
    ▪️ GET 요청은 브라우저 히스토리, 다른 시스템에서 기록된다. 데이터를 URL에 유지해서 이를 쉽게 볼 수 있으며, 제 3자에게 잠재적으로 가로챌 수 있다.

Post


  • 정보를 수정하거나 정보를 입력할때 사용한다.
  • URL에 데이터를 노출하지 않고 데이터를 HTTP BODY에 포함해서 요청한다.
  • URL에 데이터가 노출되지 않기에 기본적인 보안은 보장된다.
  • 캐싱이 불가능하다.
  • 헤드 필드에 BODY에 담긴 데이터의 설명을 하고자 Content-type 헤더필드가 들어가며 어떤 타입인지 명시된다.
  • 멱등하지 않다 = 여러 번 같은 요청을 여러번 보내도, 각기 다른 응답을 받을 수 있다.

Get과 Post의 차이점


  1. URL 데이터 노출 여부 : GET-O, POST - X
  2. URL 예시 : GET - http://localhost:8080/sign_up?id=joon&pw=1234, POST - http://localhost:8080/sign_up
  3. 데이터가 담기는 위치 : Get - Header 헤더, Post - Body 바디
  4. 캐싱가능 여부 : Get - O, Post - X
  5. 요청 결과 : Get - 동일(멱등성), Post - 변동가능(멱등하지 않다)
  6. 목적 : Get - 서버에 정보를 요청할때, Post - 서버에 정보를 입력/수정할때

Reference

GET과 POST 방식의 차이와 비교

0개의 댓글

관련 채용 정보