Редко используемые 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. Использовали ли вы эти или другие редкие методы? Расскажите в комментариях! |