4 вещи, которым меня научило н... Заметка
DEV Community на русском

4 вещи, которым меня научило написание HTTP-пробника на Rust

В этой статье подробно описывается создание средства проверки доступности на Rust, объясняется, почему автор переключился с reqwest на чистый hyper. Автор утверждает, что средства проверки доступности — это уникальные HTTP-клиенты, которым нужны подробные данные, а не оптимизация производительности. Ключевой урок — отключение пула соединений, поскольку он скрывает существенное время установки соединения и рукопожатия TLS. Статья выступает за встраивание данных о времени непосредственно в типы ошибок, а не за использование одной, неинформативной ошибки. Такой подход позволяет точно определять точки отказа, такие как DNS, TCP или TLS.Важная мера безопасности, обсуждаемая в статье, — это блокировка подделки запросов на стороне сервера (SSRF) путем фильтрации разрешенных IP-адресов, а не только имен хостов, чтобы предотвратить доступ к внутренним или конфиденциальным конечным точкам метаданных облака. Автор также подчеркивает необходимость избегать синтаксического анализа ошибок на основе строк, вместо этого преобразуя их в конкретные типы ошибок для предоставления точных и действенных причин сбоев. Это позволяет создавать различные сообщения для пользователя для таких проблем, как просроченные сертификаты, по сравнению с несоответствием имени хоста. В конечном итоге, хотя reqwest рекомендуется для общих приложений, чистый hyper оправдан, когда сам запрос является продуктом, требующим детального контроля над каждым аспектом. Автор отмечает, что это детальное зондирование является основной ценностью их службы мониторинга доступности, Uptimepage.