HTML Diff
1 added 1 removed
Original 2026-01-01
Modified 2026-02-21
1 <p><a>#статьи</a></p>
1 <p><a>#статьи</a></p>
2 <ul><li>19 янв 2024</li>
2 <ul><li>19 янв 2024</li>
3 <li>0</li>
3 <li>0</li>
4 </ul><p>Как они работают, когда используются и чем отличаются друг от друга.</p>
4 </ul><p>Как они работают, когда используются и чем отличаются друг от друга.</p>
5 <p>Иллюстрация: Оля Ежак для Skillbox Media</p>
5 <p>Иллюстрация: Оля Ежак для Skillbox Media</p>
6 <p>Онлайн-журнал для тех, кто влюблён в код и информационные технологии. Пишем для айтишников и об айтишниках.</p>
6 <p>Онлайн-журнал для тех, кто влюблён в код и информационные технологии. Пишем для айтишников и об айтишниках.</p>
7 <p>HTTP - основной интернет-протокол современного веба. В основе его работы лежат запросы и их методы, определяющие, что именно будет происходить с данными на серверах. Ключевые из них - GET и POST.</p>
7 <p>HTTP - основной интернет-протокол современного веба. В основе его работы лежат запросы и их методы, определяющие, что именно будет происходить с данными на серверах. Ключевые из них - GET и POST.</p>
8 <p>Из этой статьи вы узнаете:</p>
8 <p>Из этой статьи вы узнаете:</p>
9 <ul><li><a>как работает протокол HTTP</a>;</li>
9 <ul><li><a>как работает протокол HTTP</a>;</li>
10 <li><a>что такое метод GET</a>;</li>
10 <li><a>что такое метод GET</a>;</li>
11 <li><a>что такое метод POST</a>;</li>
11 <li><a>что такое метод POST</a>;</li>
12 <li><a>чем они отличаются друг от друга</a>.</li>
12 <li><a>чем они отличаются друг от друга</a>.</li>
13 </ul><p>Основа передачи данных в вебе - это<a>HTTP</a>(HyperText Transfer Protocol), клиент-серверный протокол взаимодействия. Работает он следующим образом.</p>
13 </ul><p>Основа передачи данных в вебе - это<a>HTTP</a>(HyperText Transfer Protocol), клиент-серверный протокол взаимодействия. Работает он следующим образом.</p>
14 <p>Клиент, обычно веб-браузер, инициирует запрос к серверу. В ответ он получает необходимый документ - HTML-страницу - или сообщение об ошибке, если запрос сформирован неправильно или документа нет на сервере.</p>
14 <p>Клиент, обычно веб-браузер, инициирует запрос к серверу. В ответ он получает необходимый документ - HTML-страницу - или сообщение об ошибке, если запрос сформирован неправильно или документа нет на сервере.</p>
15 Взаимодействие клиента и сервера<em>Иллюстрация:<a>Polina Vari для Skillbox Media</a></em><p>Сам HTTP-запрос состоит из трёх частей:</p>
15 Взаимодействие клиента и сервера<em>Иллюстрация:<a>Polina Vari для Skillbox Media</a></em><p>Сам HTTP-запрос состоит из трёх частей:</p>
16 <ul><li>Строка запроса (request line) c указанием метода HTTP, URL сайта и версии протокола.</li>
16 <ul><li>Строка запроса (request line) c указанием метода HTTP, URL сайта и версии протокола.</li>
17 <li>Заголовок (message header): набор данных в виде имён и их значений.</li>
17 <li>Заголовок (message header): набор данных в виде имён и их значений.</li>
18 <li>Тело сообщения (entity body) с информацией о запросе или ответе сервера. Например, в нём передаётся HTML-код страницы для отрисовки его браузером.</li>
18 <li>Тело сообщения (entity body) с информацией о запросе или ответе сервера. Например, в нём передаётся HTML-код страницы для отрисовки его браузером.</li>
19 </ul><p>В этой статье мы рассмотрим два HTTP-метода - GET и POST. С их помощью сайт получает данные с сервера и отправляет содержимое форм (например, имя, фамилию и номер телефона).</p>
19 </ul><p>В этой статье мы рассмотрим два HTTP-метода - GET и POST. С их помощью сайт получает данные с сервера и отправляет содержимое форм (например, имя, фамилию и номер телефона).</p>
20 <p><strong>Важно!</strong></p>
20 <p><strong>Важно!</strong></p>
21 <p>Не путайте термины<strong>запрос</strong>и <strong>метод</strong>между собой. Запрос - это сообщение, которое отправляется клиентом на сервер для выполнения на нём каких-либо действий. Обычно в нём несколько строк. Метод - это одна из частей запроса, определяющая, что именно мы хотим сделать с сервером. Например, получить содержимое веб-страницы или удалить контент.</p>
21 <p>Не путайте термины<strong>запрос</strong>и <strong>метод</strong>между собой. Запрос - это сообщение, которое отправляется клиентом на сервер для выполнения на нём каких-либо действий. Обычно в нём несколько строк. Метод - это одна из частей запроса, определяющая, что именно мы хотим сделать с сервером. Например, получить содержимое веб-страницы или удалить контент.</p>
22 <p>GET используется для получения данных от сервера. Чтобы создать запрос, введите в адресную строку браузера любой URL сайта. Например, skillbox.ru.</p>
22 <p>GET используется для получения данных от сервера. Чтобы создать запрос, введите в адресную строку браузера любой URL сайта. Например, skillbox.ru.</p>
23 <p>Клиент, то есть наш браузер, получив этот URL-адрес, сгенерирует HTTP-запрос и передаст серверу такой пакет информации:</p>
23 <p>Клиент, то есть наш браузер, получив этот URL-адрес, сгенерирует HTTP-запрос и передаст серверу такой пакет информации:</p>
24 GET / HTTP/1.1 Host: skillbox.ru User-Agent: Mozilla/5.0 (Windows NT 6.1) Gecko/20853 Firefox 20.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate<p>Разберём построчно этот HTTP-запрос:</p>
24 GET / HTTP/1.1 Host: skillbox.ru User-Agent: Mozilla/5.0 (Windows NT 6.1) Gecko/20853 Firefox 20.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate<p>Разберём построчно этот HTTP-запрос:</p>
25 <ul><li>GET / HTTP/1.1 - указания на метод и версию используемого протокола;</li>
25 <ul><li>GET / HTTP/1.1 - указания на метод и версию используемого протокола;</li>
26 <li>Host - собственно хост, к которому идёт обращение. В данном случае по адресу skillbox.ru;</li>
26 <li>Host - собственно хост, к которому идёт обращение. В данном случае по адресу skillbox.ru;</li>
27 <li>User-Agent - характеристики клиента, с которого осуществляется выход, например название и версия браузера;</li>
27 <li>User-Agent - характеристики клиента, с которого осуществляется выход, например название и версия браузера;</li>
28 <li>Accept определяет, какие типы данных может обработать клиент;</li>
28 <li>Accept определяет, какие типы данных может обработать клиент;</li>
29 <li>Accept-Language указывает на принимаемые языки;</li>
29 <li>Accept-Language указывает на принимаемые языки;</li>
30 <li>Accept-Encoding обозначает форматы и кодировку файлов.</li>
30 <li>Accept-Encoding обозначает форматы и кодировку файлов.</li>
31 </ul><p>В реальности строк может быть намного больше. Но для нашего примера этих будет достаточно.</p>
31 </ul><p>В реальности строк может быть намного больше. Но для нашего примера этих будет достаточно.</p>
32 <p>В ответ на такой запрос сервер отправляет браузеру данные главной страницы сайта, её текст, картинки и скрипты в соответствии с запрашиваемыми форматами.</p>
32 <p>В ответ на такой запрос сервер отправляет браузеру данные главной страницы сайта, её текст, картинки и скрипты в соответствии с запрашиваемыми форматами.</p>
33 При отправке HTTP-запроса браузер получает HTML-страницу<em>Иллюстрация:<a>Polina Vari для Skillbox Media</a></em><p>К любому поисковому запросу можно добавить дополнительные GET-параметры в формате "имя - значение" (name-value). Это помогает получить более точный и релевантный ответ, например, когда мы ищем товары в интернет-магазине, настраивая фильтры по производителю, цене и так далее.</p>
33 При отправке HTTP-запроса браузер получает HTML-страницу<em>Иллюстрация:<a>Polina Vari для Skillbox Media</a></em><p>К любому поисковому запросу можно добавить дополнительные GET-параметры в формате "имя - значение" (name-value). Это помогает получить более точный и релевантный ответ, например, когда мы ищем товары в интернет-магазине, настраивая фильтры по производителю, цене и так далее.</p>
34 <p>Главное - правильно задать дополнительные параметры. У них простой синтаксис:</p>
34 <p>Главное - правильно задать дополнительные параметры. У них простой синтаксис:</p>
35 <ul><li>начало строки обозначается вопросительным знаком ?;</li>
35 <ul><li>начало строки обозначается вопросительным знаком ?;</li>
36 <li>все параметры разделяются между собой амперсандом &amp;.</li>
36 <li>все параметры разделяются между собой амперсандом &amp;.</li>
37 </ul><p>Правильный список параметров метода GET будет выглядеть так: ? name1=value1&amp; name2=value2&amp; name3=value3, где name - имя параметра, а value - его значение.</p>
37 </ul><p>Правильный список параметров метода GET будет выглядеть так: ? name1=value1&amp; name2=value2&amp; name3=value3, где name - имя параметра, а value - его значение.</p>
38 <p>Посмотрим, как это используется на практике. Откроем Google и введём в поисковую строку запрос кот бегемот. Если посмотреть на URL открывшейся страницы, то мы увидим такой текст: https://www.google.ru/search?q=кот+бегемот&amp; hl=ru&amp; tbm=isch</p>
38 <p>Посмотрим, как это используется на практике. Откроем Google и введём в поисковую строку запрос кот бегемот. Если посмотреть на URL открывшейся страницы, то мы увидим такой текст: https://www.google.ru/search?q=кот+бегемот&amp; hl=ru&amp; tbm=isch</p>
39 <p>Что означают дополнительные параметры в этом случае? q - поисковый запрос кот бегемот, параметр hl отвечает за язык интерфейса, а вот tbm определяет, среди какого типа контента идёт поиск. У него значение isch - искать среди картинок.</p>
39 <p>Что означают дополнительные параметры в этом случае? q - поисковый запрос кот бегемот, параметр hl отвечает за язык интерфейса, а вот tbm определяет, среди какого типа контента идёт поиск. У него значение isch - искать среди картинок.</p>
40 Поиск с указанием параметра на поиск среди изображений<em>Скриншот: Google / Skillbox Media</em><p>Если ввести этот же запрос в браузер без tbm - https://www.google.ru/search?q=кот+бегемот&amp; hl=ru, то Google выдаст результат в общем поиске, а не только среди изображений:</p>
40 Поиск с указанием параметра на поиск среди изображений<em>Скриншот: Google / Skillbox Media</em><p>Если ввести этот же запрос в браузер без tbm - https://www.google.ru/search?q=кот+бегемот&amp; hl=ru, то Google выдаст результат в общем поиске, а не только среди изображений:</p>
41 Поиск без указания параметра isch<em>Скриншот: Google / Skillbox Media</em><p>Дополнительные параметры формируются сайтом автоматически в ответ на действия пользователя. Например, когда он настраивает фильтры отображения результатов поисковой выдачи или перечня товаров, доступных в онлайн-магазине к заказу. Но их можно менять вручную, листая страницы каталога или форума через адресную строку, а не интерфейс.</p>
41 Поиск без указания параметра isch<em>Скриншот: Google / Skillbox Media</em><p>Дополнительные параметры формируются сайтом автоматически в ответ на действия пользователя. Например, когда он настраивает фильтры отображения результатов поисковой выдачи или перечня товаров, доступных в онлайн-магазине к заказу. Но их можно менять вручную, листая страницы каталога или форума через адресную строку, а не интерфейс.</p>
42 <p>В отличие от метода GET, который используется для получения данных, POST служит для их отправки на сервер. При этом они передаются не с URL, а в теле HTTP-запроса. Поэтому их нельзя увидеть в поисковой строке браузера, истории посещённых страниц или кэше.</p>
42 <p>В отличие от метода GET, который используется для получения данных, POST служит для их отправки на сервер. При этом они передаются не с URL, а в теле HTTP-запроса. Поэтому их нельзя увидеть в поисковой строке браузера, истории посещённых страниц или кэше.</p>
43 <p>Проанализировать методы POST можно в специальных утилитах, например в браузерных инструментах разработчика. Если у вас Google Chrome, нажмите клавишу<strong>F12</strong>или сочетание<strong>Ctrl</strong>+<strong>Shift</strong>+<strong>I</strong>на Windows и <strong>⌘</strong>+<strong>Option</strong>+<strong>I</strong>на macOS. Это откроет окно DevTools в браузере.</p>
43 <p>Проанализировать методы POST можно в специальных утилитах, например в браузерных инструментах разработчика. Если у вас Google Chrome, нажмите клавишу<strong>F12</strong>или сочетание<strong>Ctrl</strong>+<strong>Shift</strong>+<strong>I</strong>на Windows и <strong>⌘</strong>+<strong>Option</strong>+<strong>I</strong>на macOS. Это откроет окно DevTools в браузере.</p>
44 <p>Нас интересует вкладка Сеть (Network). Здесь отображаются все запросы, в том числе с методом POST. Посмотрим на один из них:</p>
44 <p>Нас интересует вкладка Сеть (Network). Здесь отображаются все запросы, в том числе с методом POST. Посмотрим на один из них:</p>
45 Инструмент разработчика в Google Chrome с методом POST<em>Скриншот: Google Chrome / Skillbox Media</em><p>Мы видим URL запроса, его метод - POST и код статуса. Статус 200 говорит нам о том, что запрос выполнен успешно.</p>
45 Инструмент разработчика в Google Chrome с методом POST<em>Скриншот: Google Chrome / Skillbox Media</em><p>Мы видим URL запроса, его метод - POST и код статуса. Статус 200 говорит нам о том, что запрос выполнен успешно.</p>
46 <p>Разберём работу метода на примере. Посмотрим на HTML-код формы для сбора личных данных от посетителей сайта:</p>
46 <p>Разберём работу метода на примере. Посмотрим на HTML-код формы для сбора личных данных от посетителей сайта:</p>
47 &lt;form name="form" method="post" action="post.php"&gt;<p>Мы видим, что в качестве метода указан post. После заполнения полей формы и нажатия на кнопку отправки, все данные от браузера передаются на сервер скрытыми в теле HTTP-запроса.</p>
47 &lt;form name="form" method="post" action="post.php"&gt;<p>Мы видим, что в качестве метода указан post. После заполнения полей формы и нажатия на кнопку отправки, все данные от браузера передаются на сервер скрытыми в теле HTTP-запроса.</p>
48 <p>Если бы пользователь вводил логин и пароль для авторизации на сайте, то POST мог бы выглядеть так:</p>
48 <p>Если бы пользователь вводил логин и пароль для авторизации на сайте, то POST мог бы выглядеть так:</p>
49 POST / HTTP/1.0 Host: www.bestsite.ru … login=Olga&amp;password=12345878<p>Обратите внимание, что синтаксис методов HTTP-запросов схож - параметры отделяются друг от друга с помощью &amp;, как и в случае с GET.</p>
49 POST / HTTP/1.0 Host: www.bestsite.ru … login=Olga&amp;password=12345878<p>Обратите внимание, что синтаксис методов HTTP-запросов схож - параметры отделяются друг от друга с помощью &amp;, как и в случае с GET.</p>
50 <p>Начинающие разработчики могут путать методы между собой. Но они различаются несколькими параметрами:</p>
50 <p>Начинающие разработчики могут путать методы между собой. Но они различаются несколькими параметрами:</p>
51 - <strong>Свойство</strong><strong>GET</strong><strong>POST</strong>Способ передачи данныхЧерез URLВ теле HTTP-запросаНаправление передачиОт клиента к серверуОт сервера к клиентуЗащита данныхДанные видны всем в адресной строке браузера, истории браузера и кэшеДанные можно увидеть только с помощью инструментов разработчика, расширений браузера, специализированных программДлина методаНе более 2048 символовНе ограничена, но ограничения могут быть со стороны сервераСохранение в закладки и отправка ссылок с заданными параметрамиВозможнаНевозможнаВозможность передачи файлов с методомНетДаПоддерживаемые типы кодированияapplication/x-www-form-urlencodedapplication/x-www-form-urlencoded<p>multipart/form-data</p>
51 + <strong>Свойство</strong><strong>GET</strong><strong>POST</strong>Способ передачи данныхЧерез URLВ теле HTTP-запросаНаправление передачиОт сервера к клиентуОт клиента к серверуЗащита данныхДанные видны всем в адресной строке браузера, истории браузера и кэшеДанные можно увидеть только с помощью инструментов разработчика, расширений браузера, специализированных программДлина методаНе более 2048 символовНе ограничена, но ограничения могут быть со стороны сервераСохранение в закладки и отправка ссылок с заданными параметрамиВозможнаНевозможнаВозможность передачи файлов с методомНетДаПоддерживаемые типы кодированияapplication/x-www-form-urlencodedapplication/x-www-form-urlencoded<p>multipart/form-data</p>
52 <p>text/plain</p>
52 <p>text/plain</p>
53 <p>Различия между методами определяют их использование:</p>
53 <p>Различия между методами определяют их использование:</p>
54 <ul><li><strong>GET</strong>применяют в фильтрах интернет-магазинов, поисковиков и других сайтов. Они полезны для передачи данных, которые не нуждаются в защите от злоумышленников.</li>
54 <ul><li><strong>GET</strong>применяют в фильтрах интернет-магазинов, поисковиков и других сайтов. Они полезны для передачи данных, которые не нуждаются в защите от злоумышленников.</li>
55 <li><strong>POST</strong>используют для передачи конфиденциальной информации: паролей, банковских карт и так далее. Кроме этого, они подходят для отправки файлов, фотографий или большого объёма текста.</li>
55 <li><strong>POST</strong>используют для передачи конфиденциальной информации: паролей, банковских карт и так далее. Кроме этого, они подходят для отправки файлов, фотографий или большого объёма текста.</li>
56 </ul><p>Резюме по тому, о чём рассказали в статье:</p>
56 </ul><p>Резюме по тому, о чём рассказали в статье:</p>
57 <ul><li>HTTP-запросы - это сообщения, которые отправляются клиентом на сервер для выполнения на нём каких-либо действий.</li>
57 <ul><li>HTTP-запросы - это сообщения, которые отправляются клиентом на сервер для выполнения на нём каких-либо действий.</li>
58 <li>В любом запросе есть метод - указание на конкретное действие, которое необходимо выполнить. Например, вернуть код HTML-страницы или удалить контент.</li>
58 <li>В любом запросе есть метод - указание на конкретное действие, которое необходимо выполнить. Например, вернуть код HTML-страницы или удалить контент.</li>
59 <li>GET - метод для получения данных с сервера. Он передаётся с URL, поэтому виден в адресной строке браузера или истории посещений сайтов. Применяется в фильтрах поисковиков и онлайн-магазинов.</li>
59 <li>GET - метод для получения данных с сервера. Он передаётся с URL, поэтому виден в адресной строке браузера или истории посещений сайтов. Применяется в фильтрах поисковиков и онлайн-магазинов.</li>
60 <li>POST - метод отправки данных на сервер, например, после заполнения формы регистрации или авторизации на сайте. Информация передаётся в теле запроса и не может быть перехвачена злоумышленниками.</li>
60 <li>POST - метод отправки данных на сервер, например, после заполнения формы регистрации или авторизации на сайте. Информация передаётся в теле запроса и не может быть перехвачена злоумышленниками.</li>
61 </ul><a>Курс с трудоустройством: "Веб-разработчик" Узнать о курсе</a>
61 </ul><a>Курс с трудоустройством: "Веб-разработчик" Узнать о курсе</a>