[WEB] GET , POST 방식

숑이·2022년 4월 5일
0
post-custom-banner

사용자가 URL(Uniform Resource Locator)을 브라우저 주소창에 입력하고 엔터를 누르면 페이지로 이동한다.
사용자는 단순히 URL을 입력하였을 뿐이지만 서버 내부에서는 클라이언트의 요청에 응답(웹페이지로 표현)하기 위해서 처리를 해주어야 한다.
여기서 클라이언트가 서버로 요청을 보내는 방법인 HTTP Method에는 크게 2가지 방식이 있는데, 그것이 GET방식과 POST방식이다.

HTTP

HTTP(HyperText Transfer Protocol)란 하이퍼텍스트 전송 규약으로 Web-Client와 Web-Server간 데이터를 전송하는 프로토콜.
GET메소드와 POST메소드는 HTTP프로토콜에서 데이터 전송을 위해 지원하는 7가지 메소드 중 일부

HTTP통신할때 보내는 데이터는 HTTP패킷이라 하는데 해당 패킷의 구조는 크게 Header 영역과 Body영역으로 나누어 진다.
Header에는 크게 여러가지 정보와 어떠한 방식의 메소드를 사용하였는지에 대해 적게된다.
또한 어떠한 메소드 방식을 사용하였는지에 따라 Body영역의 사용 유무 및 사용 방법이 달라지게 된다.

GET방식

  • 클라이언트에서 서버로 데이터를 전달할 때, 주소 뒤에 '이름'과'값'이 결합된 스트링 형태로 전달
  • 주소창에 쿼리 스트링이 그대로 보여지기 때문에 보안성이 떨어진다.
  • 길이에 제한이 있다.(= 전송 테이터의 한계가 있다.)
  • POST방식보다 상대적으로 전송 속도가 빠르다.
  • 데이터의 위치 : HEADER

GET방식의 특징으로는 대표적으로 URL에 Parameter를 붙여서 전송한다는 것입니다.
URL뒤에 ?를 사용하여 Parameter를 작성하게 되고 &을 붙여 여거래의 Parameter를 구분한다.
이런식으로 GET방식은 데이터를 전송하게 되며 URL에 Parameter를 전송하기 때문에 Body영역을 사용하지 않는다.
또한 URL에 데이터를 실어 보내기 때문에 대용량 데이터 전송을 하기에 제한 사항이 있다.
한번 요청시 URL포함 255자 까지 전송이 가능하며 HTTP/1.1 에서는 2048자 까지 가능

POST방식

  • 일정 크기 이상의 데이터를 보내야 할 때 사용한다.
  • 서버로 보내기 전에 인코딩하고, 전송 후 서버에서는 다시 디코딩 작업을 한다.
  • 주소탕에 전송하는 데이터의 정보가 노출되지않아 GET방식에 비해 보안성이 높다.
  • 속도가 GET방식 보다 느리다.
  • 쿼리스트링(문자열) 데이터 뿐만 아니라, 라디오 버튼, 텍스트 박스 값은 객체들의 값도 전송 가능
  • 데이터의 위치 : BODY

POST방식의 특징으로는 대표적으로 GET방식과는 달리 Body영역에 데이터를 실어 보낸다는 점이다.
Body에 데이터를 실어 보내기 때문에 데이터 전송양에 길이 제한이 없으며 대용량 데이터를 보내는데 적합하다.

또한 POST로 데이터를 전송할때에는 Body영역 데이터 타임을 Header Content-Type에 명시를 해줘야 한다. POST방식은 GET방식과는 달리 보내는 데이터를 URL를 통해 볼 수 없어서 보안적으로 안전하다곤 하지만 다은툴을 사용하여 POST영역의 데이터를 확인 가능하기 때문에 한심해서는 안된다.

ex)
HEADER 영역
Content-Type:applcation/json; charset=UTF-8
....
BODY영역
{
"param1":"value1",
"param2":"value2"
}

GET방식과 POST방식의 차이

  • GET은 주로 웹 브라우저가 웹 서버에 데이터를 요청할 때 사용
  • POST는 웹 브라우저가 웹 서버에 데이터를 전달하기 위해 사용
  • GET을 사용하면 웹 브라워에서 웹 서버로 전달되는 데이터가 인코딩되어 URL에 붙는다.
  • POST방식은 전달되는 데이터가 보이지 않는다.
  • GET방식은 전달되는 데이터가 255개의 문자를 초과하면 문제가 발생할 수 있다.
  • 웹서버에 많은 데이터를 전달하기 위해서는 POST방식을 사용하는 것이 바람직하다.

GET방식은 캐싱이 가능하고 POST방식은 캐싱이 불가능 하다.
캐싱으로 인해 한 번 접근했던 정보에대해 다시 접근할때 빠르게 가져올 수 있기 때문에 POST방식 보다는 빠르다고 한다.

(출처: https://inpa.tistory.com/entry/WEB-%F0%9F%8C%90-GET%EA%B3%BC-POST-%EB%B0%A9%EC%8B%9D-%EB%B9%84%EA%B5%90?category=889117)

post-custom-banner

0개의 댓글