개인공부를 위한 공간

GET vs POST 방식

MangJong 2017. 7. 3. 17:13

두 방식 모두, 서버에 요청을 하는 메서드이다.

클라이언트가 서버에 요청을 할때, 제공해야 하는 자원이 있다고 할 경우,
Ex. 어떤 홈페이지의 로그인 페이지에서 로그인을 하는 경우이다.

아이디 와 패스워드는 클라이언트가 작성한 후, 그 정보를 서버에 요청하여 클라이언트가 작성한 아이디와 패스워드가 올바른 것인지 검사를 해야한다.
위의 예시를 보듯, 요청에는 자원을 보내야 하는경우가 존재한다.

GET방식으로 데이터를 보내기
클라이언트의 데이터를 URL뒤에 붙여서 보낸다. 위에서 쓴 예시처럼 아이디 패스워드를 보낸다고 하면,

www.example.com?id=mommoo&pass=1234

이런식으로 보낸다. URL 뒤에 "?" 마크를 통해 URL의 끝을 알리면서, 데이터 표현의 시작점을 알린다.

데이터는 key 와 value 쌍으로 넣어야 한다 윗 예시에서의 key는 id 랑 pass고 value는 mommoo랑 1234가 된다.

중간에 &마크는 구분자 이다. 2개이상의 key - value 쌍 데이터를 보낼때는 &마크로 구분해준다.

URL에 붙이므로, HTTP패킷의 헤더에 포함되여 서버에 요청한다.

따라서, GET 방식에서 BODY에 특별한 내용을 넣을 것이 없으므로 BODY가 빈상태로 보내진다.

그러므로, 헤더의 내용중 BODY 데이터를 설명하는 Content-Type이라는 헤더필드는 들어가지 않는다.

URL형태로 표현되므로, 특정 페이지를 다른사람 에게 접속하게 할 수 있다.

또한 간단한 데이터를 넣도록 설계되어, 데이터를 보내는 양의 한계가 있다.


POST방식으로 데이터를 보내기
POST 방식은 GET 방식과 달리, 데이터 전송을 기반으로 한 요청 메서드이다.

GET방식은 URL에 데이터를 붙여서 보내는 반면, POST방식은 URL에 붙여서 보내지 않고 BODY에다가 데이터를 넣어서 보낸다.
따라서, 헤더필드중 BODY의 데이터를 설명하는 Content-Type이라는 헤더 필드가 들어가고 어떤 데이터 타입인지 명시한다.

보안적인 측면에서의 차이
두 메서드로 데이터를 전송할 때 클라이언트에서 보낸 패킷의 스니핑은 가능하지만 노력의 차이가 존재

반응형