Spec-Zone.ru › HTTP

Заголовки: Prefer

Заголовок Prefer

Заголовок HTTP Prefer позволяет клиентам указывать предпочтения относительно определённого поведения сервера при обработке запроса.

Примечание: Браузеры не обрабатывают заголовки Prefer и Preference-Applied: они используются в специализированных клиентах, работающих по индивидуальным правилам реализации. Прежде чем полагаться на этот заголовок в рабочей среде, убедитесь, что его поддерживают и клиент, и сервер.

Серверы должны молча игнорировать неподдерживаемые ими предпочтения, как если бы заголовок отсутствовал.

Тип заголовка Заголовок запроса
Запрещённый заголовок запроса Нет

Синтаксис

Prefer: <preference>, <preference>, ...

Директивы

respond-async

Клиент предпочитает асинхронную обработку. Например, сервер может отправить ответ 202 Accepted, указывающий, что запрос принят, а также заголовок Location с URL, который клиент может использовать для отслеживания состояния обработки.

return=minimal

Запрашивает у сервера минимальное содержимое (ответ только с заголовками).

return=representation

Запрашивает полное представление ресурса в ответе.

wait=<seconds>

Время, в течение которого клиент ожидает получить ответ от сервера с момента получения запроса. Если также указано предпочтение respond-async, сервер должен ответить асинхронно, если обработка запроса займёт больше времени, чем указанный период ожидания. В противном случае серверу следует исходить из того, что время ожидания клиента истечёт по истечении wait (поведение ответа зависит от реализации сервера).

handling=lenient

Клиент хочет, чтобы сервер применял при обработке запроса нестрогую проверку и обработку ошибок.

handling=strict

Клиент хочет, чтобы сервер применял при обработке запроса строгую проверку и обработку ошибок.

Пользовательское предпочтение

Поставщики или приложения могут определять собственные предпочтения для решения конкретных задач. Например, Prefer: timezone=America/Los_Angeles.

Примеры

>

Запрос минимального ответа

Следующий запрос требует минимальный ответ. Обычно это ответ только с заголовками (в отличие от return=representation, когда в теле ответа содержится представление ресурса):

POST /resource HTTP/1.1
Host: example.com
Content-Type: application/json
Prefer: return=minimal

{"id":123, "name": "abc"}

Сервер отвечает статусом 201, но не включает тело ответа. Заголовок Location содержит URL расположения созданного ресурса. Добавлять заголовок Preference-Applied не требуется, поскольку отсутствие тела ответа очевидно:

HTTP/1.1 201 Created
Location: /resource?id=123

Запрос асинхронной обработки

В этом примере запрашивается запуск сервером задачи асинхронной обработки:

POST /process HTTP/1.1
Host: example.com
Prefer: respond-async

{
  "task": "check-broken-links"
}

Сервер отправляет ответ 202 Accepted, указывающий, что запрос принят, но его асинхронное выполнение ещё не завершено. Заголовок Location указывает на монитор состояния, отражающий ход обработки:

HTTP/1.1 202 Accepted
Location: http://example.com/tasks/123/status

Указание нескольких предпочтений

Следующий запрос содержит два предпочтения: timezone=Jupiter/Red_Spot указывает предпочтительный часовой пояс клиента, а handling=strict — на строгую проверку:

GET /events HTTP/1.1
Host: example.com
Prefer: handling=strict, timezone=Jupiter/Red_Spot

В этой реализации недопустимый часовой пояс вызывает ошибку:

HTTP/1.1 400 Bad Request

Спецификации

Спецификация
Неизвестная спецификация>
# раздел-2>

См. также

  • Preference-Applied
  • Заголовок Prefer на docs.oasis-open.org
  • Заголовок Prefer на docs.postgrest.org

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Prefer

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API