본문 바로가기

기술면접대비

[Web] HTTP Request Method /GET과 POST 비교

1. HTTP 요청 메소드란?

클라이언트가 웹 서버에게 사용자 요청의 목적/종류를 알리는 수단

 

 

2. HTTP 요청 메소드 종류

GET

- 리소스 취득

- URL(URI) 형식으로 웹서버측 리소스(데이터)를 요청

-  Conditional GET (웹브라우저의 캐싱 기능에 도움을 줌)
    => 최초 리소스를 요청할 때는 요청만 하고, 이후 요청 때는 첫 요청의 응답에 함께 온 
    HTTP 헤더 정보를 참고하여, 변경사항이 있는지 물어보는 GET
    => 캐싱에 중요한 HTTP 헤더 정보 : Last-Modified, eTag 등

 

HEAD

-메세지 헤더(문서 정보) 취득

- GET과 비슷하나, 실제 문서를 요청하는 것이 아니라, 문서 정보를 요청

  => 이에따라 HTTP 응답 메세지에 본문(Body)이 없이 HTTP 헤더 정보 만을 보냄

 

POST

- 내용 전송(파일 전송 가능)

- 클라이언트에서 서버로 어떤 정보를 제출함

   => 요청 데이터를 HTTP 바디에 담아 웹 서버로 전송

- 만일, 리소스가 새로 작성되면, 서버측은 HTTP 헤더 항목 중 'Location:' 에다가 새로 작성된 리소스에 대한 URI 주소 정보를 포함시켜 응답

 

PUT

- 내용 갱신 위주 (파일 전송 가능)

- POST 처럼 정보를 서버로 제출하는 것으로 형식은 동일하나, 갱신 위주

  => 이에 의해 갱신된 리소스에 대한 주소 정보를, POST와는 달리 서버측 응답메세지의 HTTP 헤더 항목 중에 'Location:'을 보내지 않아도 됨. 즉, 서버측은 클라이언트 측이 제시한 URI를 그대로 사용하는 것으로 간주

- PUT는 클라이언트측이 서버측 구현에 관여하는 것이므로 통상 보다 세밀한 POST를 더 많이 씀

 

DELETE

- 파일 삭제

- 웹 리소스를 제거

 

OPTIONS

- 웹서버측 제공 메소드에 대한 질의

- 가능한 메소드 옵션에 대한 질의 

  => 이 경우 응답메세지에 HTTP 헤더 항목 중 'Allow: GET, POST, HEAD'처럼 보내게 됨

 

TRACE

- 거의 사용 안함

- 요청 리소스가 수신되는 경로를 보여줌

 

CONNECT

- 거의 사용 안함

- 프락시 서버와 같은 중간 서버 경우

ex) 웹브라우저는 'CONNECT www.kistone_server.com:80   HTTP/1.0'뒤에, .. 일련의 HTTP 헤더 항목들과 빈 줄(CRLF)로써 프록시 서버에게, .. 원하는 웹서버와의 중계 연결 요청을 함

 

※ 보안상의 이유로, 웹서버가 GET, POST 2개 또는 OPTIONS 포함 3개만을 허용하는 경우가 대부분!

 

3. GET 방식과 POST 방식의 특징

 

GET POST
URL에 변수(데이터)를 포함시켜 요청 URL에 변수(데이터)를 노출하지 않고 요청
데이터를 Header(헤더)에 포함하여 전송 데이터를 Body(바디)에 포함
URL에 데이터가 노출되어 보안에 취약 URL에 데이터가 노출되지 않아서 기본 보안
전송하는 길이에 제한 有 전송하는 길이에 제한 無
캐싱할 수 있음(O) 캐싱할 수 없음 (X)

 

 

 

출처 
http://www.ktword.co.kr/abbr_view.php?m_temp1=3791
https://mangkyu.tistory.com/17