Spec-Zone.ru › HTTP

Методы: OPTIONS

Метод запроса OPTIONS

Базовая поддержка Широко доступно

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и в разных версиях браузеров. Она доступна во всех браузерах с июля 2015 года.

  • Подробнее
  • Полная информация о совместимости
>

Метод HTTP OPTIONS запрашивает разрешённые варианты взаимодействия для заданного URL или сервера. Его можно использовать, чтобы проверить, какие методы HTTP разрешены для запроса, или определить, будет ли успешным запрос при выполнении предварительного запроса CORS. Клиент может указать URL с помощью этого метода или звёздочку (*), чтобы обратиться ко всему серверу.

Запрос содержит тело Может
Успешный ответ содержит тело Может
Безопасный Да
Идемпотентный Да
Кэшируемый Нет
Разрешён в HTML-формах Нет

* Хотя сообщение OPTIONS с телом запроса технически допустимо, для него не определена семантика. В сообщение OPTIONS можно включить тело, если указать допустимый заголовок Content-Type и если известно, что сервер ожидает его: поведение зависит от реализации.

Синтаксис

OPTIONS *|<request-target>["?"<query>] HTTP/1.1

Цель запроса может быть указана в «звёздочной форме» *, обозначающей весь сервер, либо как цель запроса, что обычно используется с другими методами:

*

Указывает, что клиент хочет запросить OPTIONS для сервера в целом, а не для конкретного именованного ресурса этого сервера.

<request-target>

Определяет целевой ресурс запроса в сочетании с информацией из заголовка Host. В запросах к исходному серверу это абсолютный путь (например, /path/to/file.html), а в запросах к прокси-серверам — абсолютный URL (например, http://www.example.com/path/to/file.html).

<query> Необязательно

Необязательная составляющая запроса, перед которой ставится вопросительный знак ?. Часто используется для передачи идентифицирующей информации в виде пар key=value.

Примеры

>

Определение разрешённых методов запроса

Чтобы узнать, какие методы запроса поддерживает сервер, можно воспользоваться программой командной строки curl и отправить запрос OPTIONS:

curl -X OPTIONS https://example.org -i

В результате создаётся следующий HTTP-запрос:

OPTIONS / HTTP/2
Host: example.org
User-Agent: curl/8.7.1
Accept: */*

Ответ содержит заголовок Allow со списком разрешённых методов:

HTTP/1.1 204 No Content
Allow: OPTIONS, GET, HEAD, POST
Cache-Control: max-age=604800
Date: Thu, 13 Oct 2016 11:45:00 GMT
Server: EOS (lax004/2813)

Предварительные запросы в CORS

В CORS предварительный запрос отправляется с помощью метода OPTIONS, чтобы сервер мог сообщить, допустима ли отправка запроса. В этом примере мы запросим разрешение на использование следующих параметров:

  • Заголовок Access-Control-Request-Method, отправляемый в предварительном запросе, сообщает серверу, что фактический запрос будет отправлен с методом запроса POST.
  • Заголовок Access-Control-Request-Headers сообщает серверу, что фактический запрос будет содержать заголовки X-PINGOTHER и Content-Type.
OPTIONS /resources/post-here/ HTTP/1.1
Host: bar.example
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
Origin: https://foo.example
Access-Control-Request-Method: POST
Access-Control-Request-Headers: content-type,x-pingother

Теперь сервер может сообщить, примет ли он запрос при таких условиях. В этом примере ответ сервера указывает, что:

Access-Control-Allow-Origin

Источнику https://foo.example разрешено запрашивать URL bar.example/resources/post-here/ следующим образом:

Access-Control-Allow-Methods

POST, GET и OPTIONS являются разрешёнными методами для URL. (Этот заголовок похож на заголовок ответа Allow, но используется только для CORS.)

Access-Control-Allow-Headers

X-PINGOTHER и Content-Type являются разрешёнными заголовками запроса для URL.

Access-Control-Max-Age

Указанные выше разрешения можно кэшировать в течение 86 400 секунд (1 день).

HTTP/1.1 200 OK
Date: Mon, 01 Dec 2008 01:15:39 GMT
Server: Apache/2.0.61 (Unix)
Access-Control-Allow-Origin: https://foo.example
Access-Control-Allow-Methods: POST, GET, OPTIONS
Access-Control-Allow-Headers: X-PINGOTHER, Content-Type
Access-Control-Max-Age: 86400
Vary: Accept-Encoding, Origin
Keep-Alive: timeout=2, max=100
Connection: Keep-Alive

Примечание: Допустимыми кодами состояния являются и 200 OK, и 204 No Content, однако некоторые браузеры ошибочно считают, что к ресурсу применяется 204 No Content, и не отправляют последующий запрос для его получения.

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

Спецификация
Семантика HTTP>
# OPTIONS>

Совместимость с браузерами

Настольные компьютеры Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome для Android Firefox для Android Opera для Android Safari в iOS Samsung Internet WebView для Android WebView в iOS
OPTIONS 1 12 1 15 1 18 4 14 1 1.0 4.4 1

См. также

  • Методы HTTP-запросов
  • Коды состояния HTTP-ответов
  • Заголовки HTTP
  • Allow заголовок
  • CORS

© 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/Methods/OPTIONS

Spec-Zone.ru

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