////
Search
Duplicate
✉️

HTTP GET, POST 차이

생성일
2022/11/07 06:05
태그
최종 편집 일시
2022/11/15 15:02
프로젝트를 진행하면서 당황했다.
당연히 알고 있다고 생각했던 get과 post가 생각보다 직접 쓰려고 하니 헷갈린다.
그래서 정리한다.
get이든 post 방식이든 둘 다 브라우저가 서버에 요청을 하는 것이다.

GET 방식

get 은 요청할 때, 필요한 데이터를 Body에 담지 않고, 쿼리 스트링을 통해 전달한다.
쿼리 스트링이라 함은 URL 의 끝에 ? 와 함께 이름과 값으로 쌍을 이루는 요청이다.
GET은 요청이 캐시될 수 있다. 브라우저가 get 요청에 대한 서버의 응답을 캐시해두고, 동일한 요청이 발생할 때 서버로 요청을 보내지 않고 캐시된 데이터를 사용한다.
GET 요청은 캐시가 가능하다.
웹 캐시가 요청을 가로채 응답의 복사본을 반환한다. HTTP header 에서 cache-control 헤더를 통해 캐시 옵션을 저장할 수 있다.
GET 요청은 브라우저 히스토리에 남는다.
길이 제한이 있음.
URL에 파라미터가 그대로 나타나기 때문에 중요한 정보를 다루면 안된다.

POST 방식

post 는 리소스 생성, 변경을 위해 설계되었기 때문에 get과 달리 body에 데이터를 담아 전송한다. 길이 제한 없이 데이터 전송이 가능하고, 대용량 데이터 전송이 가능하다. GET에 비해 안전하다고 생각할 수 있지만 개발자 도구같은 툴로도 요청을 확인할 수 있기 때문에 반드시 암호화해 전송한다.
post 요청을 보낼 때는 Content-Type에 요청 데이터의 타입을 표시해야한다.
Content-Type의 종류로는 application/x-www-form-urlencoded, text/plain, multipart/form-data 등이 있다. 데이터 타입을 표시하지 않으면 서버는 내용이나 URL에 포함된 확장자 명등으로 데이터 타입을 유추하고, 알 수 없다면, application/octet-stream으로 요청을 처리한다.
POST 요청은 캐싱되지 않는다.
POST 요청은 브라우저 히스토리에 남지 않는다.
POST 요청은 대용량 데이터 전송이 가능하다

같은 태그의 다른 글 보기

Search
프론트 엔드