GET과 POST의 차이

Voler Web·2022년 8월 17일

Word

목록 보기
2/23

GET이란

  • GET은 클라이언트에서 서버로 정보를 요청하기 위해 사용되는 메서드입니다.
  • GET은 요청을 전송 할 때 필요한 데이터를 Body에 담지 않고, 쿼리 스트링을 통해 전송합니다.
  • URL의 끝에 ?와 함께 이름과 값으로 쌍을 이루는 요청 파라미터를 쿼리스트링이라 부릅니다
    만약 요청 파라미터가 여러개라면 &로 연결하여 사용합니다.

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

쿼리스트링을 포함한 URL 샘플이며 , 요청 파라미터는 name1 , name2 이며 각각의 파라미터는 value1 , value2라는 값으로 서버에 요청을 보내게 됩니다.


GET의 특징

  • GET 요청은 캐시가 가능합니다.

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

    • 브라우저 히스토리에 쿼리 문자열이 기록됩니다.
  • GET 요청은 북마크가 될 수 있습니다.

    • 요청을 URL에 붙이므로 북마크에 지정이 가능합니다.
  • GET 요청은 길이 제한이 있습니다.

    • 길이의 제한은 URL 주소의 길이 이내로 제한됩니다
    • 익스플로러에서 URL 주소가 가질 수 있는 최대 길이는 2,083자이며,
      이 중에서 순수 경로 길이는 2,048자까지만 허용됨
  • GET 요청은 중요한 정보를 다루면 안됩니다.

    • 데이터가 URL 주소에 포함되어 전송되므로 , 아무나 볼 수 있어 보안이 매우 취약합니다.
  • GET 요청은 데이터를 요청 할 때만 사용됩니다.


POST이란

  • POST는 클라이언트에서 서버로 리소스를 생성/변경하기 위해 데이터를 보낼 때 사용되는 메서드
  • POST는 전송할 데이터를 HTTP 메시지 body 부분에 담아서 서버로 보냅니다.
    • HTTP 메세지의 Body 부분은 길이의 제한 없이 데이터를 전송 할 수 있습니다.
    • body의 타입은 Content-Type 헤더에 따라 결정되며 GET에서 URL의 파라미터로 보냈던 name1=value1&name2=value2 가 body에 담겨 보내진다 생각하면 됩니다.
  • POST로 요청을 보낼 때 GET과는 다르게 URL을 확인 할 수는 없지만 POST 요청도 크롬 개발자도구 나 Fiddler와 같은 툴로 요청 내용을 확인 할 수 있어 민감한 데이터의 경우 반드시 암호화를 하여 전송해야 합니다.
  • POST로 요청을 보낼 때는 요청 헤더의 Content-Type에 요청 데이터의 타입을 표시해야 합니다.
    • Content-Type의 종류로는
      "application/x-www-form-urlencoded, text/plain, multipart/form-data" 등이 있다

POST의 특징

  • POST 요청은 캐시되지 않습니다.
  • POST 요청은 브라우저 히스토리에 남지 않습니다.
  • POST 요청은 데이터 길이에 제한이 없습니다.

GET과 POST의 차이점

  • 사용 목적 : GET은 서버의 리소스를 요청할 때 , POST는 그 리소스를 생성/수정 할 때 사용됩니다.
  • 요청에 body 유무 : GET은 URL 파라미에터 요청하는 데이터를 담아 보내기에 HTTP 메시지에 body 부분이 없고 POST는 body에 데이터를 담아 보내기에 HTTP 메시지에 body가 존재합니다.
  • 멱등성 : GET 요청은 멱등이고 , POST는 멱등이 아닙니다.
GETPOST
캐시화(cached)캐시 될 수 있음.캐시되지 않음
브라우저 히스토리히스토리에 쿼리 문자열이 기록됨히스토리에 기록되지 않음
데이터 길이데이터의 길이가 URL 주소의 길이 이내로 제한됨제한 없음
데이터 타입오직 ASCII 문자 타입의 데이터만 전송 가능제한 없음
보안성데이터가 URL 주소에 포함 되어 전송 되어

아무나 볼 수 있어 보안에 매우 취약합니다

브라우저 히스토리에도 기록 되지 않고

데이터가 따로 전송되므로 GET 방식보다 보안성이 높으나

개발자 Tool로 확인이 가능하기에 민감한 데이터는 암호화를 해야합니다.

멱등이란 ?

  • 멱등은 사전적 정의는 연산을 여러번 적용하더라도 결과가 달라지지 않는 성질을 의미합니다.
  • GET은 리소스 조회이기에 여러번 요청을 하더라도 결과가 달라지지 않을것입니다.
  • POST는 리소스 생성/수정이기에 멱등이 아니라고 볼 수 있습니다

출처: https://noahlogs.tistory.com/35 [인생의 로그캣:티스토리]
출처: https://wldudsladlfkd.tistory.com/23 [young의 개발이야기]
출처: https://brilliantdevelop.tistory.com/33 [기발개발]

profile
공부하려 끄적이는 velog

0개의 댓글