Разделы портала

Онлайн-тренинги

.
Редко используемые HTTP-методы
16.12.2020 00:00

Автор: Кристин Джеквони (KristinJackvony)
Оригинал статьи
Перевод: Ольга Алифанова

Несколько месяцев назад один из коллег-разработчиков попросил проверить фикс бага. Для проверки мне нужно было сделать HTTP-запрос с методом OPTIONS. Я никогда не слышала о таком методе и задумалась, о каких еще HTTP-методах я ничего не знаю. В этой статье я расскажу о редко используемых методах и том, как их можно применить в тестировании.

OPTIONS:

Этот метод возвращает методы, разрешенные для конкретной конечной точки. К примеру, если у вас есть URLhttp://cats.com/cat, и его можно использовать для получения списка кошек или добавления кошки, то методы, которые вернет запрос OPTIONS– это GET и POST.

OPTIONS, демонстрация:

Давайте воспользуемся Restful-BookerAPIдля проверки работы метода OPTIONS. Мы создадим новый GET-запрос (предположим, что Postmanуже установлен), который вызывает URLhttps://restful-booker.herokuapp.com/booking. При прогоне этого запроса вы увидите все доступные бронирования отелей в теле ответа. Теперь поменяем метод с GET на OPTIONS. Теперь вы увидите в теле ответа GET, HEADи POST. Для этой конечной точки доступны только эти три метода.

Зачем использовать метод OPTIONS?

При тестировании API это отличный способ выяснить, существуют ли валидные конечные точки, о которых вы ничего не знаете. Так можно узнать о дополнительных функциях для тестирования, а также о потенциальных дырах безопасности. К примеру, возможно, у вашего API не должно быть метода DELETE, но кто-то внедрил его по ошибке.

HEAD:

Этот метод возвращает только заголовки ответа на GET-запрос. Он используется, если вы хотите проверить только заголовки запроса, не нагружая сервер возвратом прочей информации.

HEAD, демонстрация:

Мы воспользуемся тем же самым URL, что и для OPTIONS. Для начала снова поменяем метод на GET. Прогоните запрос и получите тело ответа со списком доступных бронирований. Посмотрите на заголовки ответа: Server, Connection, X-Powered-By, Content-Type, Content-Length, Etag, Date, и Via. Теперь изменим метод на HEAD и перезапустим запрос. Мы получим пустое тело ответа, но нам вернутся все восемь этих заголовков.

Зачем использовать метод HEAD?

Этот метод – отличный способ проверить заголовки GET-запроса, не получая в ответе данные. Заголовки – это важно, они часто помогают установить правила безопасности. Если вы знаете, какие заголовки должен возвращать ваш API, то можно прогнать этот метод по всем вашим конечным точкам и убедиться, что заголовки верны.

CONNECT:

Этот метод устанавливает тоннель к серверу, определенному URL. Он часто используется для прокси-соединений.

CONNECT, демонстрация:

Для этой демонстрации нужно включить curl. Вы можете проверить, установлен ли curl на вашей машине, введя curl–version в командной строке. Если в ответ вы получите версию, curl установлен.

Для работы с CONNECTвведите в командную строку вот какую команду: curl -vCONNECThttp:///kristinjackvony.com. Посмотрите на ответ: примерно на девятой снизу строчке вы увидите сообщение "301 MovedPermanently". Это связано с тем, что недавно я изменила это доменное имя – теперь оно ведет на мою страничку "ThinkingTester", а не на мою личную страницу. Я сделала это не ради статьи, но оно мне пригодилось!

Зачем использовать CONNECT?

CONNECTможно использовать каждый раз, когда вы хотите посмотреть, что именно происходит при соединении с HTTP-ресурсом. Это может помочь при тестировании безопасности и при любом использовании прокси.

TRACE:

Этот метод похож на CONNECT– он тоже соединяется с ресурсом, но он также пытается получить от него ответ.

TRACE, демонстрация:

Снова воспользуемся curl. Введите команду в командную строку: curl -vTRACEhttp://isithalloween.com. Вы получите ряд заголовков ответа, а также исходный код страницы.

Зачем использовать TRACE?

Это хорошо подходит для тестирования безопасности. В ответе вы получаете исходный код страницы, и его можно исследовать в поиске куки или заголовков аутентификации, которыми может воспользоваться злоумышленник.

Надеюсь, эти редкие HTTP-методы помогут вам с генерацией хороших тест-идей! Исследуя вопрос, я нашла кучу других методов, которыми, видимо, больше не пользуются - COPY, LINK, UNLINK, LOCK, и UNLOCK. Использовали ли вы эти или другие редкие методы? Расскажите в комментариях!

Обсудить в форуме