Подтвердить что ты не робот

Что это означает, что т.е. Тело запроса?

При чтении материалов о POST и методах получения здесь есть утверждение типа "когда используется метод post, он использует тело запроса HTTP. Что означает" тело запроса HTTP "".?

4b9b3361

Ответ 1

HTTP Body Data - это байты данных, переданные в сообщении транзакции HTTP, сразу после заголовков, если они есть (в случае HTTP/0.9 никакие заголовки не передаются).

Большинство HTTP-запросов - это запросы GET без тел. Тем не менее, симуляция запросов с органами важна, чтобы правильно подчеркнуть прокси-код и проверить различные крючки, работающие с такими запросами. Большинство запросов HTTP с телами используют метод запроса POST или PUT.

Тело сообщения

Часть тела сообщения является необязательной для HTTP-сообщения, но если она доступна, она используется для переноса тела объекта, связанного с запросом или ответом. Если тело объекта связано, то обычно строки заголовков Content-Type и Content-Length определяют характер связанного с ним тела.

Тело сообщения - это те, которые содержат фактические данные запроса HTTP (включая данные формы и загруженные и т.д.) и данные ответа HTTP с сервера (включая файлы, изображения и т.д.). Ниже приведено простое содержание тела сообщения:

<html>
<body>
<h1>Hello, World!</h1>
</body>
</html>

Подробнее о сообщениях и телах HTTP см. ссылка w3org

Ответ 2

Тела можно в общих чертах разделить на две категории:

  1. Тела с одним ресурсом, состоящие из одного файла, определенного двумя заголовками: Content-Type и Content-Length.
  2. Тела с несколькими ресурсами, состоящие из тела, состоящего из нескольких частей, каждое из которых содержит различный бит информации. Обычно это связано с HTML-формами.

Следующая <form>:

<form action="http://localhost:8000/" method="post" enctype="multipart/form-data">
  <label>Name: <input name="myTextField" value="Test"></label>
  <label><input type="checkbox" name="myCheckBox"> Check</label>
  <label>Upload file: <input type="file" name="myFile" value="test.txt"></label>
  <button>Send the file</button>
</form>

отправит это тело HTTP сообщения:

POST / HTTP/1.1
Host: localhost:8000
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0) Gecko/20100101 Firefox/50.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Upgrade-Insecure-Requests: 1
Content-Type: multipart/form-data; boundary=---------------------------8721656041911415653955004498
Content-Length: 465

-----------------------------8721656041911415653955004498
Content-Disposition: form-data; name="myTextField"

Test
-----------------------------8721656041911415653955004498
Content-Disposition: form-data; name="myCheckBox"

on
-----------------------------8721656041911415653955004498
Content-Disposition: form-data; name="myFile"; filename="test.txt"
Content-Type: text/plain

Simple file.
-----------------------------8721656041911415653955004498--

Источники:

Итак, как вы получаете доступ к этим данным в серверной части (сервер)?
Различные серверные языки (например, Go-lang, Node.js, PHP, Python, Ruby... и т.д.) По-разному анализируют http body из http post request. В Node.js обычно используется body-parser, который является функцией промежуточного программного обеспечения для разбора.

// Node.js
⋮
var data1 = req.body.myTextField;
var data2 = req.body.myCheckBox;
var data3 = req.body.myFile;
⋮