Ответ
Формы отправляются методом GET, если не указан атрибут method. Данные добавляются в URL в виде query-параметров (?key=value).
Пример:
<form action="/submit">
<input name="username" value="John">
<button>Отправить</button>
</form>
При отправке браузер сделает запрос на /submit?username=John.
Для отправки данных в теле запроса нужно явно указать method="POST". Также важно помнить:
- Форма перезагружает страницу при отправке
- Для предотвращения перезагрузки нужно использовать
event.preventDefault() - По умолчанию кодировка данных -
application/x-www-form-urlencoded
Ответ 18+ 🔞
А, ну это же классика, блядь! Смотри, народ постоянно на этом подгорает, как сука на сковородке.
Вот представь: пишешь ты форму, всё красиво, поля, кнопочка. И думаешь: "Ну сейчас нажму — данные улетят тихонечко, в теле запроса, как уважаемые люди". Ан хуй там! Если ты не прописал method="POST", то браузер, этот хитрожопый ублюдок, по умолчанию юзает GET.
И что получается? Все твои драгоценные input-ы, со всеми паролями и прочей хуйнёй, он тупо лепит прямо в URL! Получается такая хуйня: /submit?username=John&password=12345. Красота, да? Вся история браузера, логи сервера — всё в говне. Пиздец и позор.
Пример, смотри, вот этот кусок говнокода:
<form action="/submit">
<input name="username" value="John">
<button>Отправить</button>
</form>
Нажмёшь кнопку — и тебя перекинет на /submit?username=John. Всё на виду, как манда на морозе.
Так что, запомни раз и нахуй: хочешь отправить данные нормально, в теле запроса, как секретную записку, — тыкай method="POST". Без этого — нихуя не выйдет.
И ещё два момента, от которых мозг вытекает, если не знать:
- Перезагрузка страницы. Это ж натуральное поведение, ёпта! Отправил форму — браузер делает запрос и грузит новый документ. Хочешь этого избежать, чтобы всё было модно-молодёжно на одном экране? Вешай на событие
submitслушатель и делайevent.preventDefault(). Иначе — welcome to 1995 год, сука. - Кодировка. По умолчанию данные кодируются как
application/x-www-form-urlencoded. Это типаключ=значение&ключ2=значение2. Если тебе нужно файлы отправлять — вспоминай проenctype="multipart/form-data", а то опять обосрёшься.
Вот и вся магия, блядь. Казалось бы, элементарщина, а половина интернета на этом спотыкается, как пьяный охуитель в подъезде.