백엔드 Back-end/네트워크 Network

Q. HTTP GET 메소드로 Body에 데이터를 실어서 보내면 데이터가 갈까?

Tap to restart 2023. 1. 14. 21:00

A. 간다. 패킷을 보면 전송되는 것을 확인할 수 있다!


GET의 경우 Body에 데이터를 실어서 보내도 안 갈거라고 생각했는데 간다는 얘기를 듣고 직접 해보게 되었다.

같은 네트워크 상에 두 컴퓨터를 켜서 요청을 받는 컴퓨터에 WireShark를 설치했다.
192.168.1.23 컴퓨터에서 PostMan으로 메소드는 GET 요청 바디(Request Body)에 Content-Type: application/x-www-form-urlencded로 userId=1이란 값을 입력하고 전송 버튼을 눌렀다.
따라서 192.168.1.23 컴퓨터가 Source 출발지, 192.168.1.2가 Destination 도착지이다. 192.168.1.2에서 WireShark를 실행해서 패킷을 확인했다.

GET 패킷 캡쳐

userId=1을 맨 마지막 줄에서 살펴볼 수 있다. 전송된 것이다.

MDN HTTP GET 메소드 설명을 보면 Request has body No라고 적혀 있다. 그래서 보내도 안 갈 줄 알았는데 간다.

다른 메소드 POST, PUT, PATCH, DELETE, HEAD, OPTIONS 어떤 걸 선택하든 모두 전송된다!


POST 패킷 캡쳐
PUT 패킷 캡쳐
PATCH 패킷 캡쳐
DELETE 패킷 캡쳐
OPTIONS 패킷 캡쳐
HEAD 패킷 캡쳐

당연히 다른 Content-Type: application/json으로 해도 마찬가지다.