Метод HTTP POST предназначен для отправки данных на сервер. Тип тела запроса указывается в заголовке Content-Type.

Разница между PUT and POST состоит в том, что PUT является идемпотентным: повторное его применение дает тот же результат, что и при первом применении (то есть у метода нет побочных эффектов), тогда как повторный вызов одного и того же POST метода может иметь такие эффекты, например, оформление одного и того же заказа несколько раз.

Запрос POST обычно отправляется через форму HTML и приводит к изменению на сервере. В этом случае тип содержимого выбирается путем размещения соответствующей строки в атрибуте enctype элемента <form> или formenctype атрибута элементов <input> или <button>:

  • application/x-www-form-urlencoded: значения кодируются в кортежах с ключом, разделенных символом '&', с '=' между ключом и значением. Не буквенно-цифровые символы - percent encoded: это причина, по которой этот тип не подходит для использования с двоичными данными (вместо этого используйте multipart/form-data)
  • multipart/form-data
  • text/plain

Когда запрос POST отправляется с помощью метода, отличного от HTML-формы, - например, через XMLHttpRequest - тело может принимать любой тип. Как описано в спецификации HTTP 1.1, POST предназначен для обеспечения единообразного метода для покрытия следующих функций:

  • Аннотация существующих ресурсов
  • Публикация сообщения на доске объявлений, в новостной группе, в списке рассылки или в аналогичной группе статей;
  • Добавление нового пользователя посредством модальности регистрации;
  • Предоставление блока данных, например, результата отправки формы, процессу обработки данных;
  • Расширение базы данных с помощью операции добавления.

 

Request has body Yes
Successful response has body Yes
Safe No
Idempotent No
Cacheable Only if freshness information is included
Allowed in HTML forms Yes

Syntax

POST /index.html

Example

Простая форма запроса, используя стандартный 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

Specifications

Specification Title
RFC 7231, секция 4.3.3: POST Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content

Browser compatibility

ВозможностьChromeEdgeFirefoxInternet ExplorerOperaSafari
Базовая поддержка Да Да Да Да Да Да
ВозможностьAndroid webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
Базовая поддержка Да Да Да Да Да Да Да

See also

Метки документа и участники

Внесли вклад в эту страницу: Blinky, RodionFedechkin, abdulazizjs, ghost28147
Обновлялась последний раз: Blinky,