Атрибут 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-запросы с нужными методами.