Каково назначение HTTP-метода OPTIONS?

Ответ

HTTP-метод OPTIONS используется для получения информации о доступных опциях и требованиях к коммуникации для определённого URL (ресурса) на сервере.

У него есть два основных назначения:

  1. Проверка возможностей сервера: Клиент может запросить, какие HTTP-методы (например, GET, POST, PUT, DELETE) сервер поддерживает для данного ресурса. Сервер вернёт их в заголовке Allow.

  2. Предварительный запрос в CORS (Preflight Request): Это наиболее частое применение. Перед отправкой "сложного" кросс-доменного запроса (например, PUT, DELETE или запроса с нестандартными заголовками), браузер автоматически отправляет OPTIONS запрос. Цель — проверить, разрешает ли сервер такой запрос с другого домена, чтобы избежать проблем с безопасностью.

Пример CORS Preflight Request:

  1. Браузер отправляет предварительный запрос:

    OPTIONS /api/items/1 HTTP/1.1
    Host: api.example.com
    Origin: https://my-app.com
    Access-Control-Request-Method: PUT
    Access-Control-Request-Headers: X-Custom-Header, Content-Type
  2. Сервер отвечает, разрешая запрос:

    HTTP/1.1 204 No Content
    Access-Control-Allow-Origin: https://my-app.com
    Access-Control-Allow-Methods: GET, POST, PUT, DELETE
    Access-Control-Allow-Headers: X-Custom-Header, Content-Type
    Access-Control-Max-Age: 86400

Если ответ сервера положительный, браузер отправляет основной PUT запрос.