본문 바로가기
개발/기타

[HTTP] GET 과 POST

by 유다110 2016. 11. 29.
반응형


HTTP란?

HTTP(Hypertext Transfer Protocol : 하이퍼텍스트 전송 프로토콜)은 클라이언트와 서버 간의 통신을 가능케 한다.

HTTP는 클라이언트와 서버 사이에서 request-response 프로토콜로서 작동한다.

보통 웹브라우저는 클라이언트이며, 웹사이트를 게시하는 컴퓨터 상의 어플리케이션은 서버이다.


e.g. 클라이언트(브라우저)는 HTTP request를 서버에 전송한다. 

그러면 서버는 클라이언트에게 그에 대한 response를 러턴한다.

response는 request에 대한 status 정보를 담고 있으며 request content 또한 지니고 있다.



HTTP request의 두 가지 메소드 : GET, POST

GET - Requests data from a specified resource

POST - Submits data to be processed to a specified resource



The GET Method

URL에서 '?'뒤로 쿼리 문자열을 보여준다.

e.g. /test/demo_form.asp?name1=value1&name2=value2


GET request는,

- 캐싱될 수 있다.

- 브라우저 기록에 남는다.

- 북마크될 수 있다.

- 민감한 데이터를 다룰 때는 사용하면 안 된다.

- 길이 제한이 있다.

- 데이터를 검색할 때만 사용해야 한다.



The POST Method 

쿼리 문자열(name/value 쌍)이 HTTP body 부분에 들어간다.

e.g.

POST /test/demo_form.asp HTTP/1.1

Host: w3schools.com

name1=value1&name2=value2


POST request는,

- 캐싱되지 않는다.

(올바른 header를 적용할 경우 캐싱 가능. 그러나 몇몇 브라우저는 header와 관계없이 POST response의 캐싱을 불허한다.)

- 브라우저 기록에 남지 않는다.

- 북마크되지 않는다.

- 길이 제한이 없다.



차이점

 

 GET

POST 

백버튼/리로드

데이터 유지

데이터 다시 제출

(브라우저는 사용자에게 데이터가 다시 제출된다는 것을 고지해야 한다.)

북마크

가능

불가

캐싱

가능

제한적 허용

인코딩 타입

application/x-www-form-urlencoded

application/x-www-form-urlencoded 혹은 multipart/form-data

다양한 인코딩 사용

기록

URL 파라미터가 기록됨

안 됨

길이 제한

URL에 붙여 보낼 수 있는 데이터의 길이가 제한됨

(최대 2048자)

없음

보안

URL에 데이터가 드러나기 때문에 POST에 비해 보안성 낮음

(특히 비밀번호와 같이 민감한 정보를 전송할 때는 절대 GET을 쓰지 말 것!)

파라미터가 브라우저 기록이나 웹서버 로그에 남지 않으므로 GET보다 안전함

가시성 

URL data가 모두에게 보임

URL 데이터가 보여지지 않음



다른 HTTP Request 메소드들

HEAD

PUT

DELETE

OPTIONS

CONNECT

반응형

댓글