본문 바로가기
공부/web

[HTTP] GET vs POST

by 밍미 2018. 7. 14.
GETvsPOST

GET vs POST

HTTP 프로토콜(the HyperText Transfer Protocol)을 이용해서 클라이언트와 서버가 데이터를 주고 받을 때 요청 메소드를 지정해주는데, 다들 이 전송방식들 간에 무슨 다른 점이 있는걸까? 하고 생각해본 적 있을 것이다. 뭔가 데이터를 주고받는 방식이나 지정해주는게 다른 것 같기도 한데.. 똑같은 것 같기도 하고.. 뭐가 다른걸까?

HTTP Request Method 중에는 GET, POST, DELETE, PUT 등의 여러 방법이 있는데, 우리가 주로 사용하는 GET 방식과 POST방식에 대해 설명하겠다.

GET방식과 POST방식의 차이라. 간단하게 생각해보면 이름에서부터 다른 점을 알아낼 수 있다. GET = 가져오는 것. POST = 보내는 것. 서버에서 데이터를 가져오려면 GET, 서버쪽의 데이터를 변경/생성하려면 POST를 사용하면 된다.

이러한 용도 차이 외에 GET방식과 POST방식의 특징을 정리해보면 아래와 같다.

 

  • GET

    • 가장 일반적인 Method
    • 클라이언트에서 서버로 데이터를 전달할 때, 주소 끝에 물음표(?)가 붙고, 그 뒤에 파라미터가 '파라미터명=값' 형태로 따라붙는다. 파라미터가 여러개일 경우 앰퍼센트(&)로 연결해서 이어붙인다. ex) http://www.sampleURL.com?param1=1&param2=100
    • URL에 파라미터 값이 그대로 보여지므로 보안성이 떨어진다.
    • URL 뒤에 이어붙이는 식이기 때문에 데이터 길이 제한이 있다. (많은 양의 데이터를 보내기에 부적합)
    • POST방식보다 상대적으로 전송 속도가 빠르다.
    • 브라우저에 의해 요청과 응답이 캐시될 수 있다.
    • 브라우저 기록에 남는다.
    • URL에 데이터가 모두 나타나므로 즐겨찾기에 기록할 수 있다.

     

  • POST

    • 데이터 길이에 제약이 없다.
    • 전송 데이터가 body 내에 숨겨져서 전달되므로 GET방식에 비해 보안성이 높다.
    • 서버로 보내기 전에 인코딩하고, 전송 후 서버에서는 다시 디코딩 작업을 한다.
    • 일반적인 텍스트 문자열 데이터 외에 input 태그 값도 전송할 수 있다.
    • 캐시되지 않는다. (고 알고 있었는데 글을 작성하며 검색하다 보니 header 설정에 따라 캐시될 수도 있다고 한다.)
    • 즐겨찾기에 기록할 수 없다.

 

 


'공부 > web' 카테고리의 다른 글

쿠키와 세션  (0) 2018.07.20
Naver SMTP 서버로 임시비밀번호 보내기  (0) 2018.07.15
웹서버 vs WAS  (0) 2018.05.31
[MyBatis] '${필드명}'과 '#{필드명}'  (0) 2018.05.31
tomcat 서버 포트충돌 시 강제로 종료시키기  (0) 2018.05.02

댓글