POST
POST
Запрос POST отправляет данные на сервер. Тип тела запроса указан заголовком Content-Type.
Разница между PUT и POST заключается в том, что PUT является идемпотентным: вызов его один раз или несколько раз подряд имеет тот же эффект (то есть не имеет побочных эффектов), тогда как последовательные одинаковые POST могут иметь дополнительные эффекты, например, несколько раз отправление заказа.
Запрос POST обычно отправляется через форму HTML и приводит к изменению на сервере. В этом случае тип содержимого выбирается путём вставки соответствующей строки в атрибут enctype элемента <form> или атрибут formenctype элемента <input> или <button>:
-
application/x-www-form-urlencoded: ключи и значения закодированы в парах "ключ-значение", разделённых'&', с'='между ключом и значением. Небуквенно-цифровые символы как в ключах, так и в значениях кодируются в процентах: это причина, по которой этот тип не подходит для использования с бинарными данными (используйтеmultipart/form-dataвместо этого) -
multipart/form-data: каждое значение отправляется как блок данных ("часть тела"), разделённый определяемым пользователем разделителем ("граница"). Ключи задаются в заголовкеContent-Dispositionкаждой части. text/plain
Когда запрос POST отправляется другим способом, нежели через форму HTML — например, с помощью XMLHttpRequest — тело может иметь любой тип. Как описано в спецификации HTTP 1.1, POST предназначен для предоставления унифицированного метода для следующих функций:
- Аннотация существующих ресурсов
- Отправка сообщения на доску объявлений, новостную группу, список рассылки или аналогичную группу статей;
- Добавление нового пользователя через модальное окно регистрации;
- Предоставление блока данных, например, результат отправки формы, для обработки данных;
- Расширение базы данных с помощью операции добавления.
| Запрос имеет тело | Да |
|---|---|
| Успешный ответ имеет тело | Да |
| Безопасный | Нет |
| Идемпотентный | Нет |
| Кэшируемый | Только если включена информация о свежести |
| Разрешено в формах HTML | Да |
Синтаксис
POST /test
Пример
Простая форма, использующая тип содержимого application/x-www-form-urlencoded по умолчанию:
POST /test HTTP/1.1 Host: foo.example Content-Type: application/x-www-form-urlencoded Content-Length: 27 field1=value1&field2=value2
Форма, использующая тип содержимого multipart/form-data:
POST /test HTTP/1.1 Host: foo.example 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--
Спецификации
| Спецификация |
|---|
| Семантика HTTP # POST |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | WebView Android | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | |
POST |
Да |
12 |
Да |
Да |
Да |
Да |
Да |
Да |
Да |
Да |
Да |
Да |
См. также
© 2005–2022 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST