[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-osnovy-html-v-chyom-raznitsa-mezhdu-get-i-post-pri-otpravke-formy":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":20,"progress":21,"seo":22},1254,"v-chyom-raznitsa-mezhdu-get-i-post-pri-otpravke-formy",39,"osnovy-html","Основы HTML","📄","В чём разница между GET и POST при отправке формы","GET и POST — это HTTP-методы отправки данных формы. GET передаёт данные в URL как query-параметры и предназначен для получения данных, POST передаёт данные в теле запроса и предназначен для изменения данных на сервере.\n\n### Сравнение\n\n| Критерий | GET | POST |\n|----------|-----|------|\n| Данные в URL | Да (`\u002Fsearch?q=java`) | Нет (в теле запроса) |\n| Идемпотентность | Да | Нет |\n| Кэширование | Да | Нет |\n| Закладки | Можно сохранить | Нельзя с данными |\n| Ограничение объёма | URL: 2048-8192 символов | Нет практического ограничения |\n| Видимость данных | В адресной строке, логах, истории | Только в теле запроса |\n| Загрузка файлов | Нет | Да |\n| Безопасность данных | Низкая (данные в URL) | Выше (данные в теле) |\n\n### Когда использовать\n\n| Сценарий | Метод | Причина |\n|----------|-------|---------|\n| Поиск | GET | Результат можно сохранить в закладки, кэшировать |\n| Фильтрация \u002F пагинация | GET | URL отражает состояние |\n| Создание записи | POST | Изменение данных на сервере |\n| Авторизация | POST | Пароль не должен попадать в URL |\n| Загрузка файла | POST | Файл передаётся в теле |\n| Удаление | POST (или DELETE) | Изменение состояния |\n\n### Примеры\n\nGET-форма (поиск):\n```html\n\u003Cform action=\"\u002Fsearch\" method=\"GET\">\n    \u003Cinput type=\"text\" name=\"q\" placeholder=\"Поиск...\">\n    \u003Cbutton type=\"submit\">Найти\u003C\u002Fbutton>\n\u003C\u002Fform>\n\u003C!-- Результат: GET \u002Fsearch?q=java -->\n```\n\nPOST-форма (создание):\n```html\n\u003Cform action=\"\u002Fapi\u002Farticles\" method=\"POST\">\n    \u003Cinput type=\"text\" name=\"title\" required>\n    \u003Ctextarea name=\"content\">\u003C\u002Ftextarea>\n    \u003Cinput type=\"hidden\" name=\"_csrf\" value=\"abc123\">\n    \u003Cbutton type=\"submit\">Создать\u003C\u002Fbutton>\n\u003C\u002Fform>\n```\n\n### Обработка в Spring MVC\n\n```java\n\u002F\u002F GET — получение данных\n@GetMapping(\"\u002Fsearch\")\npublic String search(@RequestParam String q, Model model) {\n    model.addAttribute(\"results\", searchService.find(q));\n    return \"search-results\";\n}\n\n\u002F\u002F POST — изменение данных\n@PostMapping(\"\u002Fapi\u002Farticles\")\npublic String create(@ModelAttribute ArticleForm form) {\n    articleService.create(form);\n    return \"redirect:\u002Farticles\"; \u002F\u002F PRG-паттерн\n}\n```\n\n### Паттерн PRG (Post\u002FRedirect\u002FGet)\n\nПосле успешной обработки POST-запроса сервер возвращает редирект (HTTP 302\u002F303) на GET-страницу. Это предотвращает повторную отправку формы при обновлении страницы.\n\n```\n1. POST \u002Fapi\u002Farticles  →  сервер создаёт статью\n2. 302 Redirect → \u002Farticles\n3. GET \u002Farticles  →  сервер отдаёт список статей\n```\n\n### Частые ошибки\n\n- Используют GET для операций, изменяющих данные — поисковые роботы могут случайно выполнить такой запрос при индексации\n- Передают пароли через GET — они сохраняются в истории браузера, логах и Referer-заголовке\n- Не реализуют PRG-паттерн — пользователь при обновлении страницы повторно отправляет POST, дублируя данные\n\n### Как используется в 2026\n\nSpring Security требует POST для действий, изменяющих состояние, и автоматически добавляет CSRF-токен. REST API придерживается семантики HTTP-методов: GET для чтения, POST для создания, PUT для обновления, DELETE для удаления.\n\n> **На собеседовании:** GET — данные в URL, идемпотентный, кэшируемый, для получения данных. POST — данные в теле, не идемпотентный, для изменения данных. Обязательно упомяните PRG-паттерн и то, что GET нельзя использовать для конфиденциальных данных. Бонус — связать с REST-семантикой HTTP-методов.","","middle",[15,16,17,18,19],"security","http","spring-boot","html","frontend",[],null,{"title":23,"description":24,"ogTitle":25,"ogDescription":26,"keywords":27,"schemaAnswer":37,"featuredSnippetReady":38},"В чём разница между GET и POST при отправке формы — Gymterview","Разница GET и POST в HTML-формах: передача данных, идемпотентность, кэширование, безопасность. Паттерн PRG, обработка в Spring MVC, CSRF-защита, REST-семантика.","GET vs POST при отправке формы: разница и когда использовать — Gymterview","GET — данные в URL, идемпотентный, для чтения. POST — данные в теле, для изменений. PRG-паттерн, CSRF, REST-семантика.",[28,29,30,31,32,33,34,35,36],"GET vs POST","HTML форма","HTTP метод","идемпотентность","PRG паттерн","CSRF","Spring MVC","REST","собеседование","GET передаёт данные в URL (query-параметры), идемпотентный, кэшируемый, для получения данных. POST передаёт данные в теле запроса, не идемпотентный, для изменения данных. GET нельзя использовать для паролей и конфиденциальных данных. После POST применяется PRG-паттерн (Post\u002FRedirect\u002FGet) для предотвращения повторной отправки. Spring Security требует CSRF-токен для POST.",true]