--- title: POST slug: Web/HTTP/Methods/POST tags: - HTTP - Метод запроса - Справка translation_of: Web/HTTP/Methods/POST ---
HTTP-метод POST
предназначен для отправки данных на сервер. Тип тела запроса указывается в заголовке {{HTTPHeader("Content-Type")}}.
Разница между {{HTTPMethod("PUT")}} и POST
состоит в том, что PUT
является идемпотентным: повторное его применение даёт тот же результат, что и при первом применении (то есть у метода нет побочных эффектов), тогда как повторный вызов одного и того же метода POST
может иметь такие эффекты, как например, оформление одного и того же заказа несколько раз.
Запрос POST
обычно отправляется через форму HTML и приводит к изменению на сервере. В этом случае тип содержимого выбирается путём размещения соответствующей строки в атрибуте {{htmlattrxref ("enctype", "form")}} элемента {{HTMLElement ("form")}} или {{htmlattrxref ("formenctype", "input")}} атрибута элементов {{HTMLElement ("input")}} или {{HTMLElement ("button")}}:
application/x-www-form-urlencoded
: значения кодируются в кортежах с ключом, разделённых символом '&'
, с '='
между ключом и значением. Не буквенно-цифровые символы - {{glossary ("percent encoded")}}: это причина, по которой этот тип не подходит для использования с двоичными данными (вместо этого используйте multipart/form-data
)multipart/form-data
: каждое значение посылается как блок данных ("body part"), с заданными пользовательским клиентом разделителем ("boundary"), разделяющим каждую часть. Эти ключи даются в заголовки Content-Disposition
каждой частиtext/plain
Когда запрос POST
отправляется с помощью метода, отличного от HTML-формы, — например, через {{domxref ("XMLHttpRequest")}} — тело может принимать любой тип. Как описано в спецификации HTTP 1.1, POST
предназначен для обеспечения единообразного метода для покрытия следующих функций:
Запрос имеет тело | Да |
---|---|
Успешный ответ имеет тело | Да |
{{Glossary("Safe", "Безопасный")}} | Нет |
{{Glossary("Idempotent", "Идемпотентный")}} | Нет |
{{Glossary("Cacheable", "Кешируемый")}} | Только если включена информация о свежести сообщения |
Допускается в HTML-формах | Да |
POST /index.html
Простая форма запроса, используя стандартный application/x-www-form-urlencoded
content type:
POST / HTTP/1.1 Host: foo.com Content-Type: application/x-www-form-urlencoded Content-Length: 13 say=Hi&to=Mom
Форма запроса, используя multipart/form-data
content type:
POST /test.html HTTP/1.1 Host: example.org Content-Type: multipart/form-data;boundary="boundary" --boundary Content-Disposition: form-data; name="field1" value1 --boundary Content-Disposition: form-data; name="field2"; filename="example.txt" value2 --boundary--
Спецификация | Заголовок |
---|---|
{{RFC("7231", "POST", "4.3.3")}} | Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content |
{{Compat("http.methods.POST")}}