Ответ
Метод GET считается безопасным (safe) в контексте архитектурных ограничений протокола HTTP, согласно стандарту RFC 7231.
Определение "безопасности": Безопасный метод — это метод, предназначенный только для получения информации и не должен иметь побочных эффектов на состоянии сервера. Выполнение безопасного запроса не должно приводить к изменениям данных на сервере.
Ключевые характеристики GET:
- Идемпотентность: Многократное выполнение одного и того же GET-запроса должно возвращать одинаковый результат и не влиять на состояние системы.
- Отсутствие side-effects: Сервер не должен создавать, изменять или удалять ресурсы в ответ на GET-запрос.
Пример корректного использования:
GET /api/articles/42 HTTP/1.1
Host: example.com
Этот запрос только запрашивает данные статьи с ID=42, не изменяя её.
Важное уточнение: Эта «безопасность» — семантическое соглашение, а не техническая гарантия. Ответственность за соблюдение этого соглашения лежит на разработчике сервера. На практике:
- Некорректная реализация: Если бэкенд ошибочно изменяет данные в ответ на GET (например, ведёт счётчик просмотров), это нарушает стандарт.
- Безопасность данных ≠ Безопасность метода: GET безопасен для состояния сервера, но небезопасен для конфиденциальности данных, так как параметры передаются в URL (см. предыдущий вопрос).