영어 GET 이라는 단어는 가져오다 라는 뜻을 가진 단어인데, 우리가 필요한 정보를 얻기 위해 사용하는 GET은 어떠한 정보를 가져와서 조회하기 위해서 사용되는 방식이다.
[GET방식의 특징]
URL에 변수(데이터)를 포함시켜 요청한다.
데이터를 Header(헤더)에 포함하여 전송한다.
URL에 데이터가 노출되어 보안에 취약하다.
캐싱할 수 있다.
GET 방식은 간단한 데이터를 URL에 넣도록 설계된 방식으로 데이터를 보내는 양에 한계가 있다. HTTP 자체는 GET방식의 URL 길이에 제약을 두고 있지는 않지만, 브라우저에서 최대 길이를 제한하고 있으며 URL형식에 맞지 않는 파라미터 이름이나 값은 인코딩되어 전달되야 한다.(만약 여기서 보내는 길이가 너무 긴 경우 초과데이터는 절단된다.) 특별히 전송하는 데이터가 없으면 GET방식에서 바디는 보통 빈 상태로 전송이 되며, 헤더의 내용 중 Body의 데이터를 설명하는 Content-type 헤더필드도 들어가지 않는다.
GET방식이 사용되는 예를 들어 로그인을 하는 상황이라고 가정 할때, id,pw를 입력한 후 로그인 버튼을 눌렀을 때 GET방식은 www.naver.com/login?id=welchs1&pw=welchs2 라는 페이지가 있다고 하면 ?마크를 통해 URL의 끝을 알리고, id라는 key는 'welchs1', pw라는 key는 'welchs2'라는 값을 전송한다고 볼수 있다.
여러개의 key와 value를 보내는 경우에 &를 사용하여 이어주는 GET방식은 최소한의 보안유지도 하지 않기 때문에 실제 웹사이트에서 ID와 PW같은 중요한 정보를 GET방식으로 사용하면 개인정보가 노출되는 문제가 발생하게 된다. GET방식을 사용하며 데이터를 노출시키는 경우는 개인정보가 포함되지 않는 상황에서 캐싱*을 하여 속도를 높이거나 즐겨찾기를 편리하게 사용하기 위한 경우가 많다.우리가 어떤 물건을 즐겨찾기에 추가하면 그 물건의 이름이 a라는 정보를 url에 추가하여 즐겨찾기를 생성할 수 있는 것이다.
Q) 캐싱(Caching)이란?
캐싱이란 한번 접근 후, 또 요청할 시 빠르게 접근하기 위해 레지스터에 데이터를 저장시켜 놓는 것이다.
post라는 단어는 부치다, 제출하다 라는 뜻을 가지고 있고 이러한 뜻과 유사하게 POST방식은 데이터를 서버로 제출하여 추가 또는 수정하기 위해서 사용하는 방식이다.
[POST방식의 특징]
URL에 변수(데이터)를 노출하지 않고 요청한다.
데이터를 Body(바디)에 포함시킨다.
URL에 데이터가 노출되지 않아서 기본 보안은 되어있다.
캐싱할 수 없다.
GET방식은 URL에 데이터를 붙여서 전송하는 반면에 POST는 BODY에 데이터를 넣어서 전송하는데, 헤더필드 중 BODY의 데이터를 설명하는 Content-Type이라는 헤더 필드가 들어가고 어떠한 데이터 타입인지를 명시해주어야 한다.
데이터를 BODY에 포함시키는 이점 때문에 메세지 길이의 제한은 없지만 최대 요청을 받는 시간인 Time Out이 존재하므로 클라이언트에서 페이지를 요청하고 기다리는 시간이 존재한다.
실제로 상황에서 POST 방식은 URL에 데이터가 노출되지 않으므로 즐겨찾기나 캐싱이 불가능하지만 쿼리스트링(문자열)데이터 뿐만 아니라, 라디오 버튼, 텍스트 박스와 같은 객체들의 값도 전송이 가능하다.
참고 링크 - https://mangkyu.tistory.com/17