Chrome 개발 도구 네트워크 탭에 표시된 '요청 페이로드'와 '양식 데이터'의 차이점


244

지원 해야하는 오래된 웹 응용 프로그램이 있습니다 (작성하지 않았습니다).

양식을 작성하고 제출 한 다음 Chrome에서 '네트워크'탭을 확인하면 일반적으로 '양식 데이터'가 표시되는 '요청 페이로드'가 표시됩니다. 이 둘의 차이점은 무엇이며 언제 하나 대신 다른 하나가 전송됩니까?

이것을 구글 검색했지만 실제로 이것을 설명하는 정보를 찾지 못했습니다 (JavaScript 앱을 가져 와서 "요청 페이로드"대신 "양식 데이터"를 보내려는 사람들).




2
여전히 두 가지의 차이점을 알지 못합니다. "요청 페이로드"는 유형으로 인코딩되지 않은 요청입니까?
red888

답변:


274

요청 페이로드-또는 더 정확하게 말하면 HTTP 요청의 페이로드 본문은 일반적으로 POST 또는 PUT 요청에 의해 전송되는 데이터 입니다. 그것은 헤더와 이후의 부분 CRLF(A)의 HTTP 요청 .

요청 Content-Type: application/json은 다음과 같습니다.

POST /some-path HTTP/1.1
Content-Type: application/json

{ "foo" : "bar", "name" : "John" }

AJAX 당 이것을 제출하면 브라우저는 단순히 페이로드 본문으로 제출중인 것을 보여줍니다. 데이터가 어디에서 오는지 전혀 모르기 때문에 이것이 가능한 전부입니다.

당신과 함께 HTML 양식을 제출하는 경우 method="POST"Content-Type: application/x-www-form-urlencoded또는 Content-Type: multipart/form-data귀하의 요청은 다음과 같이 보일 수 있습니다 :

POST /some-path HTTP/1.1
Content-Type: application/x-www-form-urlencoded

foo=bar&name=John

이 경우 양식 데이터는 요청 페이로드입니다. 여기서 브라우저는 더 많은 것을 알고 있습니다. bar는 제출 된 양식의 입력 필드 foo의 값이라는 것을 알고 있습니다. 그리고 그것이 당신에게 보여주는 것입니다.

따라서 Content-Type데이터 제출 방식은 다르지만 다릅니다 . 두 경우 모두 데이터는 메시지 본문에 있습니다. 그리고 Chrome은 개발자 도구에서 데이터가 표시되는 방식을 구별합니다.


3
크기 등의 측면에서 다른 것을 선호하는 이유가 있습니까? 특히 경량 AJAX 통화의 경우?
사용자

@buffer 죄송합니다, 귀하의 질문을 이해하지 못합니다.
lefloh

3
AJAX 호출을 보내는 경우 content-type을 json또는로 설정할 수 있습니다 x-www-form-urlencoded. 전자는 데이터를 요청 페이로드로 전송하고 후자는 URL 쿼리로 인코딩합니다. 둘 다 잘 작동하는 것 같습니다. 그들 중 하나를 선호하는 이유가 있습니까? Twitter, Google, Facebook, Stackoverflow 설정 내용 유형과 같은 대부분의 웹 사이트가로 설정되어 x-www-form-urlencoded있습니다. 특별한 이유가 있습니까?
사용자

2
이것은 실제로 OP와 관련 없지만 이 대답이 도움이 될 수 있습니다.
lefloh

13

Chrome에서 'Content-Type : application / json' 이있는 요청은 Request PayedLoad로 표시되고 데이터를 json 객체로 보냅니다.

그러나 'Content-Type : application / x-www-form-urlencoded'요청 은 양식 데이터를 표시하고 데이터를 Key : Value Pair 로 보냅니다 . 따라서 하나의 키에 객체 배열이 있으면 해당 키의 값을 평탄화 합니다.

{ Id: 1, 
name:'john', 
phones:[{title:'home',number:111111,...},
        {title:'office',number:22222,...}]
}

보낸다

{ Id: 1, 
name:'john', 
phones:[object object]
phones:[object object]
}

물론 PHP는 악하다. application / x-www-form-urlencoded의 인기는 PHP의 인기로 정의됩니다.
Brian Haak

4
"json 객체"와 같은 것이 없기 때문에 하향식. json은 본질적으로 문자열이므로 전송 된 json 데이터는 일반 문자열로 전송됩니다. 물론 json_encode를 사용하여 표준 "객체"로 변환 할 수 있지만 "json 객체"도 아닙니다.
Volkan Ulukut

좋아, 나는 자바 스크립트 json 템플릿 객체 또는 그냥 자바 스크립트 객체가 더 좋다고 생각한다
Mohammadreza

1
"json"또는 "json string"유형을 강조하려면 괜찮을 것입니다.
Volkan Ulukut
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.