Какие HTTP-методы считаются безопасными (safe) и почему?

«Какие HTTP-методы считаются безопасными (safe) и почему?» — вопрос из категории HTTP и веб-протоколы, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Безопасные (safe) HTTP-методы — это методы, которые не изменяют состояние ресурса на сервере. Они предназначены только для получения данных и являются идемпотентными.

К ним относятся:

  • GET — запрашивает представление ресурса.
  • HEAD — аналогичен GET, но сервер возвращает только заголовки ответа без тела.
  • OPTIONS — описывает параметры связи для целевого ресурса.
  • TRACE — выполняет проверку обратной связи по пути к целевому ресурсу (редко используется).

Пример безопасного запроса:

GET /api/articles/123 HTTP/1.1
Host: example.com
Accept: application/json

Почему это важно:

  1. Идемпотентность: Повторные безопасные запросы не оказывают дополнительного эффекта.
  2. Кеширование: Безопасные методы могут кешироваться браузерами и прокси-серверами.
  3. Web Crawlers: Поисковые роботы используют только безопасные методы.

Важное уточнение: Безопасность метода (safe) не означает защищенность данных. Для конфиденциальности и целостности данных необходимо использовать HTTPS (TLS/SSL). Методы POST, PUT, PATCH, DELETE являются небезопасными, так как предназначены для изменения данных.