Программа cURL позволяет отправить HTTP запрос любым методом, в том числе OPTIONS, HEAD, POST, PUT, DELETE, CONNECT, TRACE, PATCH и даже любым другим произвольным именем.
Для этого в cURL используется опция -X. Эта опция в различных протоколах позволяет установить команду для выполнения вместо стандартной, а в протоколе HTTP позволяет указать метод запроса.
OPTIONS /путь
С cURL можно отправить запрос OPTIONS примерно так:
curl -i -X OPTIONS http://example.org/path
Также можно использовать -v вместо -i, чтобы видеть больше вывода.
Пример с опцией -v, при которой заголовки отправляются в вывод ошибок, при этом можно уничтожить стандартный вывод, чтобы он не загромождал экран:
curl -v -s -X OPTIONS 87.236.16.208 > /dev/null
На скриншоте вы можете увидеть строку со списком поддерживаемых опций:
< Allow: POST,OPTIONS,GET,HEAD
Это означает, что запрос выполнен правильно.
OPTIONS *
Чтобы отправить простой * (вместо пути, смотрите RFC 7231) с методом OPTIONS, вы можете запустить команду примерно так:
curl -v -s --request-target "*" -X OPTIONS 87.236.16.208 > /dev/null
Как отправить HTTP запрос с произвольным методом
Используя опцию -X можно отправить запрос с любым именем, например:
curl -v -s -X HACKWARE 87.236.16.208 > /dev/null
Строка в которой сказано, что «Не реализовано» и код статуса 501 — именно это и ожидалось:
< HTTP/1.1 501 Not Implemented
Опция -X в cURL
Опция -X, или длинная версия --request <КОМАНДА> в cURL работает по-разному в зависимости от протокола, с которым она используется.
С протоколом HTTP
Задаёт настраиваемый метод запроса для использования при взаимодействии с HTTP-сервером. Указанный метод запроса будет использоваться вместо метода, который в противном случае использовался (по умолчанию GET). Прочтите спецификацию HTTP 1.1 для получения подробностей и пояснений. Общие дополнительные HTTP-запросы включают PUT и DELETE, но связанные технологии, такие как WebDAV, предлагают PROPFIND, COPY, MOVE и другие.
Обычно эта опция вам не нужна. Все виды запросов GET, HEAD, POST и PUT скорее вызываются с помощью специальных параметров командной строки.
Эта опция изменяет только фактическое слово, используемое в HTTP-запросе, но не влияет на поведение curl. Так, например, если вы хотите сделать правильный запрос HEAD, использования -X HEAD будет недостаточно. Вам нужно использовать параметр -I, --head.
Строка метода, которую вы установили с помощью -X, --request, будет использоваться для всех запросов, что, если вы, например, используете -L, --location, может вызвать непреднамеренные побочные эффекты, когда curl не изменяет метод запроса в соответствии с HTTP 30x коды ответов - и тому подобное.
С протоколом FTP
Задаёт настраиваемую команду FTP, которая будет использоваться вместо LIST при составлении списков файлов с помощью FTP.
С протоколом POP3
Задаёт настраиваемую команду POP3 для использования вместо LIST или RETR.
С протоколом IMAP
Задаёт настраиваемую команду IMAP для использования вместо LIST.
С протоколом SMTP
Задаёт настраиваемую команду SMTP для использования вместо HELP или VRFY.
Если эта опция используется несколько раз, будет использован последняя.
Смотрите также большую статью «HTTP протокол», которая содержит подробное, но написанное простым языком описание протокола.
Связанные статьи:
- Как посмотреть HTTP заголовки (100%)
- Ошибка «curl: (1) Received HTTP/0.9 when not allowed» (РЕШЕНО) (100%)
- Как выгрузить файлы методом POST с помощью cURL. Как отправить форму в cURL (76.5%)
- PHP cURL как установить значение User Agent ИЛИ как сделать так, чтобы сервера не блокировали запросы cURL? (58.8%)
- Как скачивать файлы по SSH (58.8%)
- Интернет через Bluetooth в Linux: как настроить и почему медленная скорость (RANDOM - 50%)