우리가 인터넷 브라우저를 실행하고 여러 홈페이지에 접속 해서 제공하는 서비스를 이용하는 것 모두가 GET,POST를 이용합니다.
그럼 무언가를 달라고 요청하는 것에 GET,POST가 사용되는것을 알았는데 왜 이걸 두개로 나누어 놨을까요?
어떤 데이터를 요구할 때 웹서버에게 막연하게 요청을 하면 안되겠죠?
예를 들어..
- 게시판의 게시글 중에 "5번째 글"을 내게 보여달라 또는
- "아이디/패스워드"는 이렇게 되니 로그인한 후 결과를 내게 보여달라
위 밑줄그은 부분과 같이 내가 웹서버에 요청할때 전달해야 할 정보가 있을수 있습니다.
GET과 POST는 모두 사용자가 전달해야 할 정보를 포함해서 요청할 수 있는데, 방식에 차이가 있습니다.
GET은 요청 URL에 해당 정보를 포함하는 반면, POST는 URL에 정보를 담는게 아니고 별도의 Payload에 내용을 담아 전달합니다.
아래 그림을 참조하시면 이해가 쉬울 것이라 생각됩니다.
이해가 좀 되시는지요?
사용자는 웹서버에게 게시판(board.php)에 등록된 글 중에 list_no가 10에 해당되는 글을 보여달라는 요청을 하고 있습니다.
같은 요청이지만 GET 방식에서는 브라우저의 주소창에 list_no=10 이라는 사용자가 웹서버에 전달하려는 데이터가 포함되어 그대로 노출이 되지만, POST 방식에서는 브라우저상에서는 list_no=10 이라는 값을 확인할 수 없습니다. (패킷을 수집하여 분석기(wireshark같은 툴)로 내용을 들여다 보아야만 확인이 가능함)
네 그렇습니다. 사용자가 직접 전달하려는 정보가 노출되느냐? 그렇지 않냐? 라는 차이가 있기에 통상 보안을 필요로 하는 정보(아이디/패스워드)를 전달하려할 때 POST를 사용합니다.
POST는 또한 URL 길이 제한에 의해 사용자의 정보를 충분히 담지 못하는 경우.. 예를 들면 게시글을 입력하여 전달하는 경우.. 에 역시 POST를 사용합니다.
그 외에는 거의 대부분 GET을 사용합니다.
아래는 인터넷 포털사이트인 Daum을 접속할 때 실제 브라우저가 웹서버로 요청한 데이터와 요청방식등이 표시된 화면입니다. 대부분이 이미지이며, 이미지등을 요청할때 별도의 주요 정보등 숨겨야 할 내용이 없기 때문에 GET을 사용한것을 볼수 있습니다.
기타 다른 요청방식에 대해서는 다음에 다루기로 하겠습니다.
댓글 없음:
댓글 쓰기