ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [신입 개발자 면접] GET과 POST | 초코더
    IT 상식/CS기초상식 2019. 12. 28. 23:38

    사용자가 어떤 홈페이지로 이동하기 위해서 URL을 브라우저 주소창에 작성하고 엔터를 누르면 원하는 페이지로 이동합니다. 사용자는 단순히 URL을 입력하였지만 서버 내부에서는 클라이언트의 요청에 응답하기 위해서 처리를 해주어야 합니다. 여기서 클라이언트가 서버로 요청을 보내는 방법인 HTTP Method에는 2가지 방식이 있습니다. 그것이 바로 GET과 POST 방식입니다.

     

    1. GET

    영어 GET은 가져오다라는 뜻을 가진 단어입니다. 우리가 필요한 정보를 얻기 위해 도서관에서 책을 빌려 가져오는(GET)상황과 유사하게 GET은 어떠한 정보를 가져와서 조회하기 위해서 사용되는 방식입니다.

     

    GET의 특징

    - URL에 데이터를 포함시켜 요청한다.

    - 데이터를 헤더에 포함하여 전송한다.

    - URL에 데이터가 노출되어 보안에 취약하다.

    - 전송하는 길이에 제한이 있다.

     

    예를 들어 우리가 어떤 페이지에서 로그인을 하는 상황이라고 하고, ID와 PW를 입력한 후 엔터를 칩니다.

    이럴때 요청을 GET방식으로 전송하는 경우에는 https://sinsomi.tistory.com/login?id=sin&pw=somi 와 같은 페이지가 있다고 가정합니다. 여기서 GET방식은 ?마크를 통해 URL의 끝을 알리고, ID라는 키(Key)에 대해서는 sin이라는 값(Value)를, PW라는 키(Key)에 대해서는 somi라는 값(Value)를 전송하는 것을 볼 수 있습니다. 여러개의 key와 value를 보내는 경우에  &를 사용하여 이어주는 GET방식은 최소한의 보안유지도 안하기 때문에 실제 웹사이트에서 ID와 PW같은 중요한 정보를 GET방식으로 사용하면 개인정보가 노출되는 문제가 발생합니다. GET방식을 사용하여 데이터를 노출시키는 경우는 개인정보가 포함되지 않는 상황에서 캐싱을 하여 속도를 높이거나 즐겨찾기를 편리하기 위해 사용되는 경우가 많습니다. 우리가 어떤 물건 A에 대해서 즐겨찾기를 추가하면 그 물건의 이름이 A라는 정보를 URL에 추가하여 즐겨찾기를 생성할 수 있는 것입니다.  

     

    2. POST

    POST라는 영어 단어는 부치다, 제출하다라는 뜻을 가지고 있습니다. 예를 들어 우리가 어디에 서류를 제출하는 것은 우리에 대한 정보를 제출하여 추가하기 위함입니다. 이러한 상황과 유사하게 POST 방식은 데이터를 서버로 제출하여 추가 또는 수정하기 위해서 데이터를 전송하는 방식입니다.

     

    POST의 특징

    - URL에 데이터를 노출하지 않고 요청한다.

    - 데이터를 Body에 포함시킨다.

    - URL에 데이터가 노출되지 않아서 기본 보안은 되어있다.

    - 전송하는 길이에 제한이 없다.

     

    GET방식은 URL에 데이터를 붙여서 전송하는 반면에 POST방식은 BODY에 데이터를 넣어서 전송합니다. 따라서 헤더필드 중 Body의 데이터를 설명하는 Content-Type이라는 헤더 필드가 들어가고 어떠한 데이터 타입인지를 명시해주어야 합니다. 실제로 POST방식은 URL에 데이터가 노출되지 않으므로 즐겨찾기나 캐싱이 불가능하지만 퀴리스트링 데이터 뿐만 아니라, 라디오 버튼, 텍스트 박스와 같은 객체들의 값도 전송이 가능합니다.

     

    한줄 정리 TIP!

    - GET 방식은 주소 뒤에 쿼리스트링이 그대로 전달되어 보안성이 떨어지고 전송속도는 빠름

       -> Get은 주로 웹 브라우저가 웹 서버에 데이터를 요청할 때 사용

    - POST 방식은 주소가 전달 될 때 인코딩하여 전달되어 보안성이 높지만 전송속도가 느리다

       -> Post는 웹 브라우저가 웹 서버에 데이터를 전달하기 위해 사용

    댓글

Designed by Tistory.