Атрибут method тега <form>


Описание

Атрибут method определяет HTTP-метод, используемый для отправки данных формы на сервер. Основные варианты - GET и POST, но также поддерживаются PUT, DELETE и другие методы.

Пример использования:
<form action="/search" method="get"> <input type="text" name="query" placeholder="Поиск..."> <button type="submit">Искать</button> </form> <form action="/register" method="post"> <input type="text" name="username" placeholder="Имя пользователя"> <button type="submit">Зарегистрироваться</button> </form>

Основные HTTP-методы:

Метод Описание Использование
GET Получение данных Поиск, фильтрация, безопасные операции
POST Создание данных Регистрация, отправка форм, загрузка файлов
PUT Обновление данных Редактирование существующих записей
DELETE Удаление данных Удаление записей

Сравнение GET и POST:

<!-- GET: данные в URL --> <form action="/search" method="get"> <input type="text" name="q"> <!-- При отправке: /search?q=значение --> </form> <!-- POST: данные в теле запроса --> <form action="/login" method="post"> <input type="password" name="pwd"> <!-- Пароль не виден в URL --> </form>

Рекомендации по использованию:

  • Используйте GET для безопасных операций (без изменения данных)
  • Для модификации данных всегда применяйте POST, PUT или DELETE
  • Не используйте GET для конфиденциальных данных
  • Для RESTful API используйте соответствующие методы (POST, PUT, DELETE)

Особенности безопасности:

<!-- НЕБЕЗОПАСНО: пароль в URL --> <form action="/login" method="get"> <input type="password" name="password"> </form> <!-- БЕЗОПАСНО: пароль в теле запроса --> <form action="/login" method="post"> <input type="password" name="password"> </form>

Поддержка браузерами:

  • Все браузеры поддерживают GET и POST
  • PUT, DELETE и другие методы могут требовать JavaScript
  • Некоторые старые браузеры могут игнорировать нестандартные методы

Пример с REST API:

<form id="edit-form" action="/articles/123" method="post"> <input type="hidden" name="_method" value="PUT"> <input type="text" name="title" value="Статья"> <button type="submit">Обновить</button> </form> <!-- На сервере нужно обработать _method как переопределение метода -->

Примечание: Хотя HTML формально поддерживает только GET и POST, многие фреймворки (например, Laravel) предоставляют способы эмуляции других HTTP-методов через скрытое поле _method. В современных SPA-приложениях предпочтительнее использовать AJAX-запросы с нужными методами.