Методы: 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разрешено запрашивать URLbar.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 |
См. также
© 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