:GET과 POST는 HTTP 프로토콜을 이용하여 클라이언트에서 서버로 무엇인가를 요청할 때 사용한다.
GET
: 클라이언트에서 서버로 어떠한 리소스를 요청하기 위해 사용하는 메서드
:요청하는 데이터가 HTTP Request Message의 Header 부분에 URL에 담겨서 전송된다.
:URL 끝에 "?"를 붙이고 변수명1=값1&변수명2=값2...형식으로 파라미터를 작성하여 데이터를 전송
: 이러한 방식은 URL이라는 공간에 담겨가기 때문에 전송할 수 있는 크기가 제한적이고 보안이 필요한 데이터에 대해서 그대로 노출되는 문제가 있다.
POST
: 클라이언트에서 서버로 리소스를 생성하거나 변경을 위해 데이터를 전송할 때 사용하는 메서드
: HTTP Request Message의 body 부분에 담겨 전송
: HTTP Message의 body의 길이의 제한이 없고, GET 방식에 비해 보안적인 측면이 낫다. 하지만 암호화 하지 않는 이상 비슷
차이점
사용목적
: GET은 데이터를 가져오는 것, 서버에서 데이터를 가져와 보여주는 용도, 서버의 값이나 상태를 변경x
: POST는 서버의 값이나 상태를 변경하거나 추가하기 위해 사용
캐싱
: GET은 캐시가 가능하다. GET을 통해 서버에 리소스를 요청할 때, 웹 캐시가 요청을 가로채 서버로 부터 리소스를 다시 다운로드하는 대신 리소스의 복사본을 반환한다. HTTP헤더에서 Cache-control 헤더를 통해 캐시 옵션을 지정할 수 있다.
: POST는 캐시되지 않는다. POST방식으로 요청해야 할 것을 데이터의 크기가 작고 보안적인 문제가 없다는 이유로 GET 요청을 한다면 기존 캐싱되었던 데이터가 응답 될 수 있다.
멱등성(Idempotent)
:GET은 멱등이고, POST는 멱등이 아니다.
: 멱등의 사전적 정의는 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질을 의미
: GET을 리소스를 조회한다는 점에서 여러 번 요청하더라도 응답이 똑같다.
: POST는 리소스를 새로 생성하거나 변경할 때 사용되기 때문에 멱등이 아니다. = POST요청 발생하면 서버가 변경될 수 있다.
'네트워크' 카테고리의 다른 글
[네트워크]HTTP / HTTPS 차이 (0) | 2023.08.10 |
---|---|
[네트워크]HTTP 상태 코드 (0) | 2023.08.10 |
[네트워크]HTTP (0) | 2023.08.10 |
[네트워크]web browser,IP, proxy,port (0) | 2023.03.30 |
[네트워크]HTTP + 보안 1 (1) | 2023.03.29 |